www.rolandk.de
- Aktuelle Themen zu .Net -
Achtung: Hier handelt es sich um meine alte Seite.
Die aktuelle ist unter folgendem Link erreichbar: www.rolandk.de/wp/
Home Blog Globaler Fehlerdialog




















































Globaler Fehlerdialog
Donnerstag, den 27. Januar 2011 um 21:26 Uhr

Wie sollen Fehler oder besser gesagt Exceptions in C# automatisch behandelt werden? Diese Frage klingt auf den ersten Blick trivial, ist aber am Ende eventuell doch nicht so einfach. Wie viele Informationen darf der Benutzer sehen? Wie sage ich dem Benutzer auch bei Standard-Exceptions des Frameworks, was falsch gelaufen ist? Wie sollen nicht vorhergesehene Exceptions behandelt werden? Alles Fragen, bei denen es ebenso viele Lösungen wie .Net Programme gibt. Eine einfache Möglichkeit bei Windows.Forms Anwendungen ist das Application.ThreadException Ereignis:

  1. public static void Main(string[] args)
  2. {
  3. //..
  4. Application.ThreadException += new ThreadExceptionEventHandler(OnApplicationThreadException);
  5. //..
  6. }
  7.  
  8. private static void OnApplicationThreadException(object sender, ThreadExceptionEventArgs e)
  9. {
  10. //Handle given exception here
  11. }

Sehr sinnvoll an dieser Stelle ist ein kleiner Dialog, der die aufgetretene Exception sinnvoll formatiert anzeigt. Wichtig dabei: Der Entwickler will wissen, wo im Code die erste Exception geschmissen wurde, der Benutzer will wissen, was genau schief gelaufen ist und allgemein ist es meist im Interesse des Entwicklers, nicht zu viele interne Daten des Programms preiszugeben. Lösungen dafür gibt es wie bereits erwähnt sehr viele, meine Implementierung sieht man im nachfolgenden Screenshot:

 

 

Der Fehlertext der obersten Exception wird grundsätzlich als Fehlerbeschreibung ganz oben dargestellt, die Nachrichten aller darin verschachtelten Exceptions können in einer Baumansicht aufgeklappt werden. Dabei werden auch zusätzliche Daten wie etwa die Position im Programmcode, die Klasse oder verschiedene andere Eigenschaften je nach Typ der Exception angezeigt. Weiterhin kann es sinnvoll sein, dem Benutzer anzubieten, die Exception per "OK" einfach zu überspringen oder direkt per "Exit Application" das Programm zu beenden. Für den Aufruf eines solchen Dialogs sollte eine einfache statische Methode, ähnlich der Funktion MessageBox.Show ausreichen. Nachfolgender Code zeigt ein kurzes Beispiel:

  1. private static void OnApplicationThreadException(object sender, ThreadExceptionEventArgs e)
  2. {
  3. ErrorDialog.Show(e.Exception);
  4. }

Auf diese Weise kann dieser Dialog auch von anderen Stellen des Programms ohne größere Schwierigkeiten angezeigt werden.

 

Kommentar hinzufügen

Ihr Name:
Kommentar: