Khi làm việc trên các dự án ASP.NET 1.1, tôi luôn sử dụng Global.asax để bắt tất cả các lỗi. Tôi đang tìm một cách tương tự để bắt tất cả các ngoại lệ trong một điều khiển người dùng Windows Forms, mà kết thúc lên được một điều khiển trình duyệt IE. Cách thích hợp để làm gì đó như thế này?Xử lý ngoại lệ toàn cầu để điều khiển winforms
Trả lời
Bạn cần xử lý sự kiện System.Windows.Forms.Application.ThreadException
cho Windows Biểu mẫu. Bài viết này thực sự đã giúp tôi: http://bytes.com/forum/thread236199.html.
Nếu bạn đang sử dụng VB.NET, bạn có thể nhấn vào ApplicationEvents.vb rất thuận tiện. Tệp này được cung cấp miễn phí với dự án VB.NET WinForms và chứa phương thức xử lý unhandled exceptions.
Để có được tập tin tiện lợi này, đó là "Project Properties >> Application >> Sự kiện Application"
Nếu bạn không sử dụng VB.NET, sau đó yeah, nó xử lý Application.ThreadException.
Hiện nay trong ứng dụng winforms của tôi, tôi có xử lý cho Application.ThreadException
, như trên, nhưng cũng AppDomain.CurrentDomain.UnhandledException
Hầu hết các trường hợp ngoại lệ đến qua xử lý ThreadException
, nhưng một trong những AppDomain cũng đã thu hút được một vài kinh nghiệm của tôi
Mã mẫu từ MSDN cho biết cách bắt cả hai loại ngoại lệ chưa được xử lý: [msdn] (http://msdn.microsoft.com/en-us/library/system.windows.forms.application.threadexception.aspx) –
Sub Main()
Dim currentDomain As AppDomain = AppDomain.CurrentDomain
AddHandler currentDomain.UnhandledException, AddressOf MyHandler
Try
Throw New Exception("1")
Catch e As Exception
Console.WriteLine("Catch clause caught : " + e.Message)
Console.WriteLine()
End Try
Throw New Exception("2")
End Sub
Sub MyHandler(sender As Object, args As UnhandledExceptionEventArgs)
Dim e As Exception = DirectCast(args.ExceptionObject, Exception)
Console.WriteLine("MyHandler caught : " + e.Message)
Console.WriteLine("Runtime terminating: {0}", args.IsTerminating)
End Sub
Để Xử lý ngoại lệ toàn cầu ...
Windows Application
System.Windows.Forms.Application.ThreadException kiện
thường được sử dụng trong phương pháp chính. Tham khảo MSDN Thread Exception
Asp.Net
System.Web.HttpApplication.Error kiện
thường được sử dụng trong tập tin Global.asax. Tham khảo MSDN Global.asax Global Handlers
Console Application
System.AppDomain.UnhandledException kiện
Thường được sử dụng trong phương pháp chính. Tham khảo MSDN UnhandledException
Ngoài ra, hãy xem [câu hỏi của tôi] (http://stackoverflow.com/questions/944/unhandled-exception-handler-in-net-11) đối với một số cạm bẫy (liên kết đến một cặp vợ chồng) mã hóa các mục blog kinh dị). – Ray