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:/n/n"; errorMsg += ex.Message + "/n/nStack Trace:/n" + ex.StackTrace; MessageBox.Show("2:" + errorMsg); } }