从MSDN开始:
如果在默认应用程序中处理了UnhandledException事件 域,在该域中针对 any 线程中的 any 未处理的异常, 无论线程从哪个应用程序域开始。
所以我有以下内容:
类中的异步方法:
public Task Initialization { get; }
public MyClass(string language)
{
Initialization = InitializeAsync(language);
}
private async Task InitializeAsync(string language)
{
throw new Exception("Test Exception");
}
注册一个事件以捕获所有未处理的异常(在OnStartUp方法中):
protected override void OnStartup(StartupEventArgs e)
{
AppDomain.CurrentDomain.UnhandledException += MyHandler;
}
private static void MyHandler(object sender, UnhandledExceptionEventArgs args)
{
MessageBox.Show("Exception", "Caption");
}
问题是UnhandledException
事件没有捕获InitializeAsync
方法中的异常
这里的question对我来说听起来像是UnhandledException捕获了所有线程中的异常,但对我而言却不是。
我试图删除ConfigureAwait(false)
,但也无法正常工作。
我使用了UnobservedTaskException
和DispatcherUnhandledException
,但两者都不起作用
当我将异常打包到MyClass
构造函数中时,一切正常,但在InitializeAsync
方法中却不能
有什么想法吗?