So können Sie eine nicht behandelte Ausnahme abfangen / beobachten, die von einer Task ausgelöst wurde

Ich versuche, alle nicht behandelten Ausnahmen in meiner App zu protokollieren / zu melden (Fehlerberichtslösung). Ich bin auf ein Szenario gestoßen, das immer unbehandelt ist. Ich frage mich, wie ich diesen Fehler unbehandelt abfangen soll. Bitte beachten Sie, dass ich heute Morgen eine Menge Nachforschungen angestellt und viele Dinge ausprobiert habe. Ja, ich habe es gesehendiese, diese und viele mehr. Ich suche nur nach einer generischen Lösung, um unbehandelte Ausnahmen zu protokollieren.

Ich habe den folgenden Code in einer Konsolentest-App-Hauptmethode:

Task.Factory.StartNew(TryExecute);

oder

Task.Run((Action)TryExecute);

sowie die folgende Methode:

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

Ich habe bereits versucht, in meiner App die folgenden Verbindungen herzustellen, aber sie werden nie aufgerufen.

AppDomain.CurrentDomain.UnhandledException
TaskScheduler.UnobservedTaskException

In meiner Wpf-App, in der ich diesen Fehler anfangs gefunden habe, habe ich auch eine Verbindung zu diesen Ereignissen hergestellt, sie wurde jedoch nie aufgerufen.

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

Der einzige Handler, der jemals aufgerufen wird, ist:

AppDomain.CurrentDomain.FirstChanceException

Dies ist jedoch keine gültige Lösung, da ich nur nicht erfasste Ausnahmen melden möchte (nicht jede Ausnahme, da FirstChanceException aufgerufen wird, bevor jemals Catch-Blöcke ausgeführt / aufgelöst werden.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage