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
处理程序也会抛出我试图在这里处理的异常,导致多个错误消息,而实际上只有一条(确切地说,我希望处理数据库上的连接丢失)。