2008年7月25日 星期五

Windows Form 的 Exception 處理

之前對於 WinForm 的 Exception 處理方法,一直搞不懂。
原來,微軟有 sample

public static void Main(string[] args)
{
    // Add the event handler for handling UI thread exceptions to the event.
    Application.ThreadException += new ThreadExceptionEventHandler(ErrorHandlerForm.Form1_UIThreadException);

    // Set the unhandled exception mode to force all Windows Forms errors to go through
    // our handler.
    Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);

    // Add the event handler for handling non-UI thread exceptions to the event. 
    AppDomain.CurrentDomain.UnhandledException +=
        new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

    // Runs the application.
    Application.Run(new ErrorHandlerForm());
}

 

也就是說,UI Thread 上發生的錯誤,會產生 Application.ThreadException 事件
而非 UI Thread 上發生的錯誤,則會產生 AppDomain.CurrentDomain.UnhandledException 事件

沒有留言:

Share with Facebook