tôi viết mã kiểm tra sau, mặc dù tôi là khá chắc chắn điều gì sẽ xảy ra:Điều gì xảy ra với giá trị trả về sau khi ngoại lệ được ném vào khối cuối cùng?
static void Main(string[] args)
{
Console.WriteLine(Test().ToString());
Console.ReadKey(false);
}
static bool Test()
{
try
{
try
{
return true;
}
finally
{
throw new Exception();
}
}
catch (Exception)
{
return false;
}
}
đủ Chắc chắn, chương trình đã viết "False" ra cửa sổ Console. Câu hỏi của tôi là, điều gì xảy ra với sự thật mà ban đầu được trả về? Có cách nào để có được giá trị này, trong khối catch nếu có thể, hoặc trong bản gốc cuối cùng bị chặn nếu không?
Chỉ cần làm rõ, điều này chỉ dành cho mục đích giáo dục. Tôi sẽ không bao giờ làm một hệ thống ngoại lệ phức tạp như vậy trong một chương trình thực tế.
Hầu như trùng lặp: [Có hợp pháp và có thể truy cập giá trị trả lại trong một khối cuối cùng không?] (Http://stackoverflow.com/q/304847/256431) –