AppDomain.CurrentDomain.UnhandledException在async方法中没有捕获一个异常。

问题描述 投票:0回答:1

MSDN:

如果UnhandledException事件是在默认的applicationdomain中处理的,那么它将在那里为 任何 异常 任何 线程,无论该线程在哪个应用域启动。

所以,我有以下内容。

一个类中的异步方法

 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),它也不工作。

我用的是 UnobservedTaskExceptionDispatcherUnhandledException 也不行

当我把异常打包到 MyClass 构造函数一切正常,但在 InitializeAsync 方法,它不

有什么想法吗?

c# unhandled-exception
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.