// Handling a ThreadException leaves the application in an undefined state. // See https://msdn.microsoft.com/en-us/library/system.windows.forms.application.threadexception(v=vs.100).aspx // Log the exception, ask the user to report it, and exit. private static void Application_ThreadException(object sender, ThreadExceptionEventArgs e) { try { WriteLine($"\n==== UNHANDLED UI EXCEPTION ====\n{e.Exception.ToString()}\n==== cut ===="); ExceptionForm.ShowException(e.Exception, "There was an unhandled UI exception.", urlfeedback); } catch { } }
private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { try { WriteLine($"\n==== UNHANDLED EXCEPTION ====\n{e.ExceptionObject.ToString()}\n==== cut ===="); WriteLine(null); LogLineQueueEvent.WaitOne(100); ExceptionForm.ShowException(e.ExceptionObject as Exception, "An unhandled fatal exception has occurred.", urlfeedback, isFatal: true); } catch { } Environment.Exit(1); }
// Handling a ThreadException leaves the application in an undefined state. // See https://msdn.microsoft.com/en-us/library/system.windows.forms.application.threadexception(v=vs.100).aspx // Log the exception, ask the user to report it, and exit. private static void Application_ThreadException(object sender, ThreadExceptionEventArgs e) { try { TraceLog.WriteLine($"\n==== UNHANDLED UI EXCEPTION ====\n{e.Exception.ToString()}\n==== cut ===="); // Ignore COM exceptions in Web Browser component if (e.Exception is System.Runtime.InteropServices.COMException && e.Exception.StackTrace.Contains("System.Windows.Forms.UnsafeNativeMethods.IWebBrowser2.Navigate2")) { return; } ExceptionForm.ShowException(e.Exception, "There was an unhandled UI exception.", urlfeedback); } catch { } }