- Return và finally có tính tương tranh, ta hiểu chúng có tính "cuối cùng" khi thực thi một khối lệnh hoặc trong một phương thức.
- Vậy chúng thật sự là cuối cùng ??
Chúng ta sẽ thử cài đặt đoạn mã lệnh như sau:
01. Cài đặt sự tương tranh giữa return và finally (không xuất lỗi)
int f1()
{
try
{
return 10;
}
finally
{
return 5;
}
}
02. Hoặc sửa lại như sau và có xuất lỗi
int f2()
{
try
{
throw new
Exception();
}
finally
{
return 5;
}
}
Trong C#, cả hai trường hợp trên đều là không hợp lệ: Các lệnh return là bị cấm trong khối lệnh finally. Đây là sự hạn chế tránh viết mã mang tính mơ hồ gây nhầm lẫn. C# đủ thông minh để làm tất cả các nhiệm vụ của bạn, nhưng không phải ngôn ngữ nào cũng "khuôn khổ" như vậy. Nhưng điều này là hợp lệ trong Python.
0 comments:
Đăng nhận xét