Frage Was ist die beste Vorgehensweise zum Behandeln aller Ausnahmen in WPF-Anwendungen?


Hallo
Gibt es eine Möglichkeit, alle Fehlerausnahmen und Abstürze in der WPF-Anwendung zu behandeln? ich weiss Bescheid DispatcherUnhandledException, aber es behandelt nur Ausnahmen im UI-Thread, oder? Gibt es eine Möglichkeit, alle Ausnahmen in anderen Threads zu erfassen und zu protokollieren? und verbindliche Fehler auch? Wie implementieren Sie diese Art von Anforderung in Ihrem Unternehmenssystem?


10
2018-06-24 04:51


Ursprung


Antworten:


Denken Sie daran, dass Microsoft nicht empfiehlt, alle Ausnahmen abzufangen, stattdessen empfehlen Sie, nur Ausnahmen abzufangen, die Sie kennen (oder an einem bestimmten Ort erwarten). Noch mehr, wenn Sie das Logo "Zertifiziert für Microsoft [Windows | Vista]" erhalten möchten, dürfen Sie keine unbekannten Ausnahmen abfangen, und solche Ausnahmen müssen gehen Wir sind.


3
2018-06-24 07:42



AppDomain.CurrentDomain.UnhandledException

Fängt alle nicht behandelten Ausnahmen für den aktuellen Thread ab. So gehen wir in unserer Anwendung damit um.

BindingErrors werden immer im Ausgabefenster behandelt und protokolliert. Vor einer Veröffentlichung überprüfen wir das Ausgabefenster auf verbindliche Fehler und beheben so viele wie möglich.

Ich bin jedoch der Meinung, dass Sie verbindliche Fehler nicht als unbehandelt behandeln möchten, da sie meist wiederherstellbar sind und vor jeder Veröffentlichung so gut wie möglich behoben werden sollten. Sie können Debug> Ausnahmen in Visual Studio ändern, damit BindingFailure ausgelöst wird, um spezifischere Informationen zu erhalten.

HTH,

Dennis


10
2018-06-24 05:09



Ja, es gibt 3 Orte:

  1. Ort Application.Run() in try ... catch
  2. DispatcherUnhandledException
  3. AppDomain.CurrentDomain.UnhandledException

In beiden Fällen sollten Sie eine Bitte-Verzeihen-Nachricht anzeigen und vorschlagen, einen Fehlerbericht zu senden.

Der Dienst auf Ihrem Server sollte entweder "Vielen Dank für die Übermittlung des Fehlerberichts" oder "Das Problem ist bereits in der nächsten Version behoben" beantworten. bitte aktualisieren'


4
2018-06-24 07:50



Hier eine schöne Lösung, Logging mit NLog:

Logging in .NET mit NLog (Standard-Konfigurationsdatei, alle Ausnahmen abfangen und zum Logger routen, ...)


1
2018-06-13 08:02