C# OnNet中引发异常-未被主循环捕获
我有以下代码:C# OnNet中引发异常-未被主循环捕获,c#,C#,我有以下代码: try { Application.Run(myForm); } catch (Exception e) { // handle } 在我的MyForm中,当我在按钮单击处理程序中抛出异常时,它会按预期捕获并由上述代码处理。当我抛出表单的onEnter处理程序时,它不会被捕获。使用AppDomain.CurrentDomain.UnhandledException public static void Main() { AppDoma
try
{
Application.Run(myForm);
}
catch (Exception e)
{
// handle
}
在我的
MyForm
中,当我在按钮单击处理程序中抛出异常时,它会按预期捕获并由上述代码处理。当我抛出表单的onEnter
处理程序时,它不会被捕获。使用AppDomain.CurrentDomain.UnhandledException
public static void Main()
{
AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyHandler);
Application.Run(myForm);
}
static void MyHandler(object sender, UnhandledExceptionEventArgs args)
{
Exception e = (Exception) args.ExceptionObject;
Console.WriteLine("MyHandler caught : " + e.Message);
Console.WriteLine("Runtime terminating: {0}", args.IsTerminating);
}
如果向AppDomain.CurrentDomain.UnhandledException添加处理程序,它会在那里被捕获吗?会,但我希望它在我的主循环中,因为在那里我可以完全终止我的应用程序。如果它被另一个处理者抓住,我必须跳出铁环终止。最值得注意的是,有些
onClose
处理程序也会抛出我试图在这里处理的异常,导致多个错误消息,而实际上只有一条(确切地说,我希望处理数据库上的连接丢失)。