.NET未处理的异常

时间:2016-10-17 15:59:36

标签: c# .net

我正在使用this MSDN article中的示例代码。

[SecurityPermission(SecurityAction.Demand, Flags=SecurityPermissionFlag.ControlAppDomain)]
   public static void Main()
   {
      AppDomain currentDomain = AppDomain.CurrentDomain;
      currentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyHandler);

      try {
         throw new Exception("1");
      } catch (Exception e) {
         Console.WriteLine("Catch clause caught : {0} \n", e.Message);
      }

      throw new Exception("2");
   }

   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);
   }

处理程序捕获未处理的异常。但是,在处理程序运行后,仍会显示未处理的异常2。在调试模式下,在发布模式下,如果.exe直接启动。

我想要抑制第二个异常,因此未处理的异常处理程序可以静默终止/重启应用程序。我记得这在.NET 3中使用VB.NET。

1 个答案:

答案 0 :(得分:2)

请参阅问题链接中的代码:

render

如您所见,没有人处理第二个例外。引用文章:

  

此事件提供未捕获异常的通知。它允许应用程序在系统默认处理程序向用户报告异常并终止应用程序之前记录有关异常的信息