>[STAThread] >static void Main() >{ > // Creates an instance of the methods that will handle the exception. > CustomExceptionHandler eh = new CustomExceptionHandler(); > > // Adds the event handler to to the event. > Application.ThreadException += new ThreadExceptionEventHandler(eh.OnThreadException); > > Application.Run(new Form1()); >} > >// The following was copied directly from the docs >#region Exception Handling >// Creates a class to handle the exception event. >internal class CustomExceptionHandler >{ > > // Handles the exception event. > public void OnThreadException(object sender, ThreadExceptionEventArgs t) > { > DialogResult result = DialogResult.Cancel; > try > { > result = this.ShowThreadExceptionDialog(t.Exception); > } > catch > { > try > { > MessageBox.Show("Fatal Error", "Fatal Error", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Stop); > } > finally > { > Application.Exit(); > } > } > > // Exits the program when the user clicks Abort. > if (result == DialogResult.Abort) > Application.Exit(); > } > > // Creates the error message and displays it. > private DialogResult ShowThreadExceptionDialog(Exception e) > { > string errorMsg = "An error occurred please contact the adminstrator with the following information:\n\n"; > errorMsg = errorMsg + e.Message + "\n\nStack Trace:\n" + e.StackTrace; > return MessageBox.Show(errorMsg, "Application Error", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Stop); > } >} >#endregion > >// And then the button click that simply throws an exception: > throw new Exception("Test Exception Handling"); >>
>[STAThread] >static void Main() >{ > try > { > // Creates an instance of the methods that will handle the exception. > CustomExceptionHandler eh = new CustomExceptionHandler(); > > // Adds the event handler to to the event. > Application.ThreadException += new ThreadExceptionEventHandler(eh.OnThreadException); > > Application.Run(new Form1()); > } > catch (Exception ex) > { > MessageBox.Show(ex.Message); > } >} >>