[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");I've also tried it with the try/catch in the Main, but it still does the same thing:
[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); } }Did I miss something? Like I said, this is exactly how the docs say to do it. I'm assuming you played around with it a bit more and got it to work properly.