Как поймать / наблюдать необработанное исключение, выброшенное из Задачи
Я пытаюсь регистрировать / сообщать обо всех необработанных исключениях в моем приложении (решение об ошибках). Я сталкивался со сценарием, который всегда необработан. Мне интересно, как бы я уловил эту ошибку необработанным способом. Обратите внимание, что сегодня утром я провел кучу исследований и много чего пробовал. Да, я виделэто, это и многое другое. Я просто ищу общее решение для регистрации необработанных исключений.
У меня есть следующий код внутри основного метода консольных тестовых приложений:
Task.Factory.StartNew(TryExecute);
или же
Task.Run((Action)TryExecute);
а также следующий метод:
private static void TryExecute() {
throw new Exception("I'm never caught");
}
Я уже пытался подключиться к следующему в моем приложении, но они никогда не вызывают.
AppDomain.CurrentDomain.UnhandledException
TaskScheduler.UnobservedTaskException
В моем приложении Wpf, где я изначально обнаружил эту ошибку, я также подключился к этим событиям, но она так и не была вызвана.
Dispatcher.UnhandledException
Application.Current.DispatcherUnhandledException
System.Windows.Forms.Application.ThreadException
Единственный обработчик, который вызывается когда-либо:
AppDomain.CurrentDomain.FirstChanceException
но это недопустимое решение, так как я хочу только сообщить о неперехваченных исключениях (не каждое исключение, поскольку FirstChanceException вызывается до того, как какие-либо блоки catch когда-либо будут выполнены / разрешены).