Cuối cùng khối chỉ bảo lãnh (ít nhất chủ yếu là đảm bảo, thấy ngoại trừ từ MSDN dưới đây) rằng họ sẽ có vào trong trường hợp các khối try ném một ngoại lệ. Nếu bạn ném một ngoại lệ trong vòng khối cuối cùng, ngoại lệ sẽ khiến kiểm soát rời khỏi khối cuối cùng và phần còn lại của mã trong khối cuối cùng đó sẽ không thực thi.
Trong trường hợp của bạn, dòng không được thực hiện xảy ra sau khi ngoại lệ trong cùng một khối cuối cùng, do đó, nó bị bỏ qua.
Từ MSDN - try-finally:
Các cuối cùng khối rất hữu ích để dọn dẹp bất kỳ tài nguyên mà bố trí trong thử khối và để chạy bất kỳ mã đó phải thực hiện thậm chí nếu một ngoại lệ xảy ra trong số thử khối. Thông thường, báo cáo của một khối cuối cùng được thực hiện khi kiểm soát lại một thử tuyên bố, cho dù việc chuyển giao quyền kiểm soát xảy ra như là kết quả của thực hiện bình thường, thực hiện của một nghỉ, tiếp tục, goto hoặc trả lại tuyên bố hoặc tuyên truyền ngoại lệ ra khỏi tuyên bố dùng thử.
Trong trường hợp ngoại lệ được xử lý, liên kết cuối cùng là khối được đảm bảo để chạy. Tuy nhiên, nếu ngoại lệ không được giải quyết, việc thực thi các khối cuối cùng là phụ thuộc vào cách hoạt động ngoại lệ được giải phóng là được kích hoạt. Điều đó, đến lượt nó, phụ thuộc vào cách máy tính của bạn được thiết lập. Để biết thêm thông tin, hãy xem Xử lý ngoại lệ không được xử lý trong CLR.
Lưu ý: Unhandled Exception Processing in the CLR là tham chiếu đến bài viết trong số tháng 9 năm 2008 của tạp chí MSDN. Tất cả các vấn đề năm 2008 và cũ hơn của tạp chí MSDN chỉ có sẵn dưới dạng tệp .chm và sẽ cần được tải xuống trước khi xem.
Nguồn
2012-06-14 18:59:04
Liên quan: [Điều gì xảy ra trong C# Nếu một khối cuối cùng ném một ngoại lệ?] (Http://stackoverflow.com/questions/2911215) –