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).