Jak złapać / obserwować nieobsługiwany wyjątek wygenerowany przez zadanie

Próbuję zalogować / zgłosić wszystkie nieobsłużone wyjątki w mojej aplikacji (rozwiązanie do raportowania błędów). Natknąłem się na scenariusz, który jest zawsze nieobsługiwany. Zastanawiam się, jak złapałbym ten błąd w nieobsługiwany sposób. Proszę zauważyć, że dziś rano zrobiłem mnóstwo badań i próbowałem wielu rzeczy. Tak, widziałemto, to i wiele więcej. Po prostu szukam ogólnego rozwiązania do rejestrowania nieobsługiwanych wyjątków.

W głównym sposobie testowania aplikacji konsoli mam następujący kod:

Task.Factory.StartNew(TryExecute);

lub

Task.Run((Action)TryExecute);

a także następująca metoda:

private static void TryExecute() {
   throw new Exception("I'm never caught");
}

Próbowałem już okablowania do następujących w mojej aplikacji, ale nigdy nie są wywoływani.

AppDomain.CurrentDomain.UnhandledException
TaskScheduler.UnobservedTaskException

W mojej aplikacji Wpf, gdzie początkowo znalazłem ten błąd, nawiązałem połączenie z tymi zdarzeniami, ale nigdy nie został wywołany.

Dispatcher.UnhandledException
Application.Current.DispatcherUnhandledException
System.Windows.Forms.Application.ThreadException

Jedynym podręcznikiem, który nazywa się kiedykolwiek, jest:

AppDomain.CurrentDomain.FirstChanceException

nie jest to jednak poprawne rozwiązanie, ponieważ chcę zgłaszać nie przechwycone wyjątki (nie każdy wyjątek, jak FirstChanceException jest wywoływany, zanim jakiekolwiek bloki catch zostaną kiedykolwiek wykonane / rozwiązane).

questionAnswers(2)

yourAnswerToTheQuestion