AppDomain.CurrentDomain.UnhandledException не перехватывает исключение в методе asyn c - PullRequest
1 голос
/ 03 мая 2020

ОТ MSDN :

Если событие UnhandledException обрабатывается в домене приложения по умолчанию, оно вызывается там для любого необработанного исключения в любой поток, независимо от того, в каком домене приложения запущен поток.

Итак, у меня есть следующее:

Асин c метод в классе:

 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), это тоже не работает.

Я использовал UnobservedTaskException и DispatcherUnhandledException, он тоже не работает

Когда я упаковываю исключение в конструкторе MyClass, все работает нормально, но в InitializeAsync метод, которого нет

Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...