.net winformグローバル例外処理

2260 ワード

static class Program     

{     

    /// <summary>     

    ///  。     

    /// </summary>     

    [STAThread]     

    static void Main()     

    {     

        // Add the event handler for handling UI thread exceptions to the event.     

        Application.ThreadException += new ThreadExceptionEventHandler(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);     

    

        //------------------------     

        Application.EnableVisualStyles();     

        Application.SetCompatibleTextRenderingDefault(false);     

        Application.Run(new Form1());     

    }     

    

    // Handle the UI exceptions by showing a dialog box, and asking the user whether     

    // or not they wish to abort execution.     

    private static void Form1_UIThreadException(object sender, ThreadExceptionEventArgs t)     

    {     

        MessageBox.Show("1:"+t.Exception.ToString());     

    }     

    

    // Handle the UI exceptions by showing a dialog box, and asking the user whether     

    // or not they wish to abort execution.     

    // NOTE: This exception cannot be kept from terminating the application - it can only      

    // log the event, and inform the user about it.      

    private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)     

    {     

        Exception ex = (Exception)e.ExceptionObject;     

        string errorMsg = "An application error occurred. Please contact the adminstrator " +     

            "with the following information:

"; errorMsg += ex.Message + "

Stack Trace:
" + ex.StackTrace; MessageBox.Show("2:" + errorMsg); } }