未处理和线程异常

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
    }