DispatcherUnhandledException chỉ được nâng lên bởi chuỗi giao diện người dùng và chỉ khi ngoại lệ được nâng lên khi chạy một sự kiện. Có một chút của một truyền thống để xử lý các loại ngoại lệ đặc biệt, Windows Forms có nó quá với Application.ThreadException (kém tên, không có gì để làm với chủ đề).
Lý do là có một cơ hội nhỏ để xử lý ngoại lệ và giữ cho chương trình còn hoạt động vì trình xử lý sự kiện UI không phải lúc nào cũng làm thay đổi trạng thái của chương trình quá đáng kể. Điều này giúp ích rất nhiều cho việc suy nghĩ mơ hồ. Windows Forms đưa điều này đến mức cực đoan, nó hiển thị một ThreadExceptionDialog có nút Continue, cho phép người dùng bỏ qua ngoại lệ. WPF không làm điều đó, bạn phải viết một hộp thoại như thế. Đó là lý do tại sao sự kiện ở đó.
Hành động mặc định của DispatcherUnhandledException là không bắt ngoại lệ. Vì vậy, bạn không sao để bỏ qua nó, AppDomain.UnhandledException sẽ kích hoạt tiếp theo.
Nguồn
2010-07-09 12:21:54
thực sự khi Application.DispatcherUnhandledException không được sử dụng, những ngoại lệ đó sẽ hiển thị trong AppDomain.UnhandledException và ứng dụng sẽ thoát ngay lập tức. – stijn
Ứng dụng sẽ không tồn tại nếu ngoại lệ bị bắt và xử lý.Cả hai câu trả lời và bình luận ngụ ý rằng một trong hai cách ứng dụng sẽ thoát ra là sai. – vikp