ASP.NET 1.1 프로젝트에서 작업 할 때 나는 항상 Global.asax를 사용하여 모든 오류를 잡았습니다. Windows Forms 사용자 컨트롤에서 모든 예외를 catch하는 비슷한 방법을 찾고 있는데, 이는 호스팅 된 IE 컨트롤이됩니다. 이런 일을하는 올바른 방법은 무엇입니까?winforms 제어를위한 전역 예외 처리
답변
Windows Forms의 경우 System.Windows.Forms.Application.ThreadException
이벤트를 처리해야합니다. 이 기사는 나를 도왔습니다 : http://bytes.com/forum/thread236199.html.
VB.NET을 사용하는 경우 매우 편리한 ApplicationEvents.vb를 사용할 수 있습니다. 이 파일은 VB.NET WinForms 프로젝트에서 무료로 제공되며 unhandled exceptions 처리 방법이 포함되어 있습니다.
이 멋진 파일을 얻으려면, 그것의 "프로젝트 속성 >> 응용 프로그램 >> 응용 프로그램 이벤트"당신이 VB.NET을 사용하지 않는 경우는, 다음 네, Application.ThreadException을 처리합니다.
Application.ThreadException
에 대한 핸들러를 내 윈폼 응용 프로그램에서 현재
뿐만 아니라 AppDomain.CurrentDomain.UnhandledException
대부분의 예외는 ThreadException
핸들러를 통해 도착하지만, 응용 프로그램 도메인 하나는 내 경험
두 유형의 처리되지 않은 예외를 모두 잡는 방법을 보여주는 MSDN의 샘플 코드 [msdn] (http://msdn.microsoft.com/en-us/library/system.windows.forms.application.threadexception.aspx) –
코드에 몇 잡았다 MSDN에서 : http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2
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
가 세계적으로 예외를 처리 할 수 ...
,Windows 응용 프로그램
System.Windows.Forms.Application.ThreadException 이벤트 일반적으로 홈페이지 방법에 사용
Asp.Net
System.Web.HttpApplication.Error 이벤트 일반적으로 Global.asax 파일에서 사용
참조하십시오. MSDN Global.asax Global Handlers
콘솔 응용 프로그램
System.AppDomain.UnhandledException 이벤트 일반적으로 홈페이지 방법에 사용
참조하십시오. 참조하십시오. MSDN UnhandledException
또한 몇 가지 함정에 대한 [내 질문] (http://stackoverflow.com/questions/944/unhandled-exception-handler-in-net-11)을보십시오. 코딩 호러 블로그 항목). – Ray