UnhandledException是否应通知所有未处理的异常?

时间:2017-11-22 15:13:18

标签: c# wpf

我正在尝试记录xml文件中的所有异常,所以我所做的是创建一个UnhandledException方法,每次生成异常时都会调用该方法,这是一个小例子:

public MainWindow()
{
    AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(UnhandledExceptionTrapper);

    InitializeComponent();
    throw new Exception("this is an example");
}

public static void UnhandledExceptionTrapper(object sender, UnhandledExceptionEventArgs e)
{

    Console.WriteLine(e.ExceptionObject.ToString()); //Here there is breakpoint
    Environment.Exit(1);
}

现在问题是只有在主线程内发生异常时调用方法UnhandledExceptionTrapper,实际上我执行不同任务中的所有主要方法,例如:

 Task.Factory.StartNew(() =>
 {
     //heavy operations
     foo();
 })
 .ContinueWith((prevTask) =>
 {
     //final operations
 });

现在foo()发生异常,例如:

public void Foo()
{
    throw new Exception("another example");
}

方法UnhandledExceptionTrapper没有调用它。 在官方文件中:

  

未捕获到异常时发生。

我不明白这是否适用于所有应用程序(也是任务),或只是主线程。

感谢任何解释。

0 个答案:

没有答案