Bernd Löchner
Fehler
- Na und!
"Everything is broken." -
Bob Dylan
Fehler sind
- allgegenwärtig
- schlecht für's Geschäft
- schlecht für's Ansehen
- schlecht für den DAX
- gefährlich oder tödlich
- spektakulär
Fehler haben eine technische Seite (jemand
hat einen Fehler gemacht) und eine organisatorische: Fehler wurde nicht
durch Test aufgedeckt.
Kontext von Komponenten: Benutzer, Nachbarsysteme
und Laufzeitplattform
Fehler ist ein unscharfer Begriff, es
gibt Varianten, Abstufungen, usw.
Eigentlich: Fehler ist eine ungewöhnliche
Situation, die besonderer Behandlung bedarf.
Separation of concerns: Normalfall von
Fehlerfall trennen und getrennt behandeln
Gute Fehlerbehandlung ist entscheidend!
Fehlerbehandlung ist die operationelle
Seite nichtfunktionaler Anforderungen
Klassische Fehlerbehandlung
- Rückgabewert einer Funktion signalisiert Fehler
- Fehler in globaler Variable
- immer selbst nachsehen, ob ein Fehler
passiert ist
Moderner: Ausnahmen - Kombination von Mitteilen des Fehlers und Managen des Kontrollflusses - ohne beides zu vermengen
- Vermeide Missbrauch: Make exceptions
exceptional!
Richtiges Exceptionhandling ist auch nicht ohne...
Fehler in der Fehlerbehandlung...
Fehler in finally können Rest im Block überspringen
Sicherheitsfassaden: Firewalls für Fehler
Parameter werden beim Ein-/Ausgehen aus der Komponente validiert (zwischen Kompontente und Rest der Welt)
Separation of Concern
Weitere Patterns
Eindeutige Fehler-Identifikation - erlaubt Verfolgung des Fehlers durch die Logs
- statischer Teil: Wo war der Fehler (Klasse, Zeile)
- dynamischer Teil: Womit hatte der Code
zurzeit gearbeitet: Datei, Datensatz...
Trennung der Ausnahmen - technische Ausnahmen
- fachliche Ausnahmen
Persistentes Logging
Expliziter Fehlermanager
Den Anwender mit einbeziehen