Home » Error Handling
Archiv der Kategorie: Error Handling
Exceptions versus Status Code propagation
- Exceptions vs. status returns by Ned Batchelder
- or StackTrace: Why is it better to throw an exception rather than return an error code?
- or StackTrace 2: Exceptions or error codes
Java Exception Handling
- Best Practice by Thorben Janssen
Was ist gutes Error-Handling?
Gute Fehlerbehandlung bietet Übersicht, welche Fehlersituationen zu welcher Reaktion führen.
Mögliche Reaktionen bei Fehlern:
- SW gibt Exception weiter an caller
- SW erstellt Teilresultate, mit Fehler-Informationen
- …
In allen meinen vergangenen Projekten hat man mit Error-Codes (Strings) gearbeitet. Es ist dann immer recht schwierig von diesen Error-Code auf deren Verarbeitung zu schliessen.
Wäre es nicht besser, mit Exceptions zu arbeiten, statt mit Fehlercodes? Wäre es nicht besser, für alle Fehlersituationen, die eine bestimmte Reaktion hervorrufen (z.B. erstellen eines Teilresultats mit Fehlerinfo) dieselbe Exception zu werfen?
Wäre es nicht sinnvoll, wenn die Prozedur, die die Fehlerreaktion hervorrufen würde Teil der Exception wäre, bzw. die Exception das Interface implementieren würde?
Siehe auch: Exceptions versus Status Code propagation
Aufgaben eines guten Error-Handlings
Mitteilen:
- Was ist passiert
- Welche ursache hat welchen Impact –> Triage ermöglich. Wichtiges zuerst lösen.
- Wie kann es gelöst werden.
- Konstistenten Zustand im System zurück lassen. ROLLBACK.
Inhalt des Exception Objekt:
Typem von Exception Objekten:
- Environmen Exception (Unterteilbar in Service Exception (unterteilbar in ServiceUnavailableEx und ServiceResponseException) und Platform Exception)
Eine Platform Komponente oder ein Sevice war nicht verfügbar. - Data Validation Exception
Ein Feld hat keinen/falschen Wert
Felder:- Feld
- Key
- Value
- Breached Constraint
- Herkunft (wer hat das feld geliefert)
- Feld
- Allgemeine Exception Informationen: (Basisklasse. Data Validationn Exc und Environment Exc leiten davon ab)
- Was ging schief (ist bei Environment Exceptions schon inherent klar)
- Current Process (der nicht hat erfolgreich ausgeführt werden können)
- Info- oder Addendum-Meldungen: Mit (teilweise) demselben Mechanismus wie exceptions werden of jegliche art von Processing-Messages verarbeitet. Das hat zu folge, dass auch Infos (z.B. „77 items verarbeitet“) als „Exception“ prozessiert werden.