public static void Main(string[] args)
{
// Add the event handler for handling UI thread exceptions to the event.
Application.ThreadException += new
ThreadExceptionEventHandler(ErrorHandlerForm.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);
// Runs the application.
Application.Run(new ErrorHandlerForm());
}
在使用 Windows 窗体的应用程序中,在
主应用程序线程导致 Application.ThreadException
如果处理了此事件,则默认行为为
未处理的异常不会终止应用程序,
although the application is left in an unknown state. In that case,
未引发 UnhandledException事件。此行为可以是
通过使用应用程序配置文件或通过使用
方法将模式更改为
UnhandledExceptionMode.ThrowException在 ThreadException之前
事件处理程序。这仅适用于主应用程序
引发未处理的 UnhandledException事件
在其他线程中抛出的异常。
从 Visual Studio 2005(VisualBasic应用程序)开始
框架为 main 中未处理的异常提供了另一个事件
应用程序线程 -WindowsFormsApplicationBase.UnhandledException。
This event has an event arguments object with the same name as the
事件参数对象,但使用
different properties. In particular, this event arguments object has
an ExitApplication property that allows the application to continue
运行,忽略未处理的异常(并离开应用程序)
在这种情况下,AppDomain
事件。