首页 > 解决方案 > AppDomain.CurrentDomain.UnhandledException 未在异步方法中捕获异常

问题描述

来自MSDN

如果在默认应用程序域中处理了 UnhandledException 事件,则无论线程在哪个应用程序域中启动,任何线程中的任何未处理异常都会在该处引发。

所以我有以下内容:

类中的异步方法:

 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方法中的异常

这个关于 SO 的问题对我来说听起来 UnhandledException 在所有线程中都捕获了异常,但对我来说没有。

我尝试删除ConfigureAwait(false),它也不起作用。

我用了UnobservedTaskExceptionand DispatcherUnhandledException,也不管用。

当我在构造函数中打包异常时,MyClass一切正常,但在InitializeAsync方法中却没有

有任何想法吗?

标签: c#unhandled-exception

解决方案


推荐阅读