Tôi đã viết một chương trình đơn giản để kiểm tra lý thuyết rằng khối "cuối cùng" sẽ luôn luôn thực thi bất kể cái gì. Nhưng, những gì tôi nhìn thấy từ pgm dưới đây là điều khiển không bao giờ có vẻ nhập vào khối cuối cùng bên ngoài.Tại sao bên ngoài "cuối cùng" không được thực hiện khi bên trong "bắt" ném?
Tôi đã thử thực hiện F5 và cũng Ctrl-F5 trong Visual studio và kết quả tương tự.
Ai đó có thể giải thích lý do tại sao tôi thấy hành vi này?
Output trên cửa sổ giao diện điều khiển là:
bên trong bắt
bên cuối cùng
ngoài bắt
unhandled exeption:
..và sau đó ứng dụng bị treo
public class Program
{
static void Main()
{
try
{
try
{
string s = null;
s.ToString();
}
catch
{
Console.WriteLine("inner catch");
throw;
}
finally
{
Console.WriteLine("inner finally");
}
return;
}
catch
{
Console.WriteLine("outer catch");
throw;
}
finally
{
Console.WriteLine("outer finally");
}
}
}
oh ok. nhấp vào hủy bỏ làm cho "bên ngoài cuối cùng: tuyên bố hiển thị. Tốt để biết điều này. – user330612