Điều đó sẽ không tái tạo ngữ nghĩa giống như Catch VB Khi biểu. Có một sự khác biệt chính. VB Khi biểu thức được thực hiện trước khi ngăn xếp thư giãn xảy ra. Nếu bạn đã kiểm tra ngăn xếp tại điểm của một khi Bộ lọc, bạn sẽ thực sự thấy khung nơi ngoại lệ được ném.
Có một nếu trong khối catch là khác nhau bởi vì khối catch thực hiện sau khi ngăn xếp là unwound. Điều này đặc biệt quan trọng khi nói đến báo cáo lỗi. Trong kịch bản VB, bạn có khả năng gặp sự cố với một dấu vết ngăn xếp bao gồm cả lỗi. Không thể có được hành vi đó trong C#.
EDIT:
Đã viết một detailed blog post về đề tài này.
Kiểm tra trang này http://stackoverflow.com/questions/4269189/c-exception-monitor-with-filtering;) – Edward83