我正在尝试记录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
没有调用它。
在官方文件中:
未捕获到异常时发生。
我不明白这是否适用于所有应用程序(也是任务),或只是主线程。
感谢任何解释。