2008-08-05 10 views
33

ASP.NET 1.1 프로젝트에서 작업 할 때 나는 항상 Global.asax를 사용하여 모든 오류를 잡았습니다. Windows Forms 사용자 컨트롤에서 모든 예외를 catch하는 비슷한 방법을 찾고 있는데, 이는 호스팅 된 IE 컨트롤이됩니다. 이런 일을하는 올바른 방법은 무엇입니까?winforms 제어를위한 전역 예외 처리

+0

또한 몇 가지 함정에 대한 [내 질문] (http://stackoverflow.com/questions/944/unhandled-exception-handler-in-net-11)을보십시오. 코딩 호러 블로그 항목). – Ray

답변

6

VB.NET을 사용하는 경우 매우 편리한 ApplicationEvents.vb를 사용할 수 있습니다. 이 파일은 VB.NET WinForms 프로젝트에서 무료로 제공되며 unhandled exceptions 처리 방법이 포함되어 있습니다.

이 멋진 파일을 얻으려면, 그것의 "프로젝트 속성 >> 응용 프로그램 >> 응용 프로그램 이벤트"

당신이 VB.NET을 사용하지 않는 경우는, 다음 네, Application.ThreadException을 처리합니다.

11
나는 위와 Application.ThreadException에 대한 핸들러를 내 윈폼 응용 프로그램에서 현재

뿐만 아니라 AppDomain.CurrentDomain.UnhandledException

대부분의 예외는 ThreadException 핸들러를 통해 도착하지만, 응용 프로그램 도메인 하나는 내 경험

+3

두 유형의 처리되지 않은 예외를 모두 잡는 방법을 보여주는 MSDN의 샘플 코드 [msdn] (http://msdn.microsoft.com/en-us/library/system.windows.forms.application.threadexception.aspx) –

2

코드에 몇 잡았다 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 
3

가 세계적으로 예외를 처리 할 수 ​​...

,

Windows 응용 프로그램

System.Windows.Forms.Application.ThreadException 이벤트 일반적으로 홈페이지 방법에 사용

. MSDN Thread Exception

Asp.Net

System.Web.HttpApplication.Error 이벤트 일반적으로 Global.asax 파일에서 사용

참조하십시오. MSDN Global.asax Global Handlers

콘솔 응용 프로그램

System.AppDomain.UnhandledException 이벤트 일반적으로 홈페이지 방법에 사용

참조하십시오. 참조하십시오. MSDN UnhandledException