未處理和執行緒異常

AppDomain.UnhandledException 此事件提供未捕獲異常的通知。它允許應用程式在系統預設處理程式向使用者報告異常並終止應用程式之前記錄有關異常的資訊。如果有足夠的有關應用程式狀態的資訊,則其他可以採取措施 - 例如儲存程式資料以便以後恢復。建議小心,因為在未處理異常時程式資料可能會被破壞。

    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    private static void Main(string[] args)
    {
        AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(UnhandledException);            
    }

Application.ThreadException 此事件允許 Windows 窗體應用程式處理 Windows 窗體執行緒中發生的其他未處理的異常。將事件處理程式附加到 ThreadException 事件以處理這些異常,這將使你的應用程式處於未知狀態。在可能的情況下,異常應由結構化異常處理塊處理。

    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    private static void Main(string[] args)
    {
        AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(UnhandledException);
        Application.ThreadException += new ThreadExceptionEventHandler(ThreadException);
    }

最後是異常處理

static void UnhandledException(object sender, UnhandledExceptionEventArgs e)
    {
        Exception ex = (Exception)e.ExceptionObject;
        // your code
    }

static void ThreadException(object sender, ThreadExceptionEventArgs e)
    {
        Exception ex = e.Exception;
        // your code
    }