Error Handling
Grundsätzliche Strategien zum Erkennen, Klassifizieren und Behandeln von Fehlern in Softwaresystemen.
Klassifikation
- KomplexitätMittel
- AuswirkungTechnisch
- EntscheidungstypDesign
- OrganisationsreifeFortgeschritten
Technischer Kontext
Prinzipien & Ziele
Use Cases & Szenarien
Kompromisse
- Fehlerhafte Klassifizierung führt zu falschen Alerts.
- Zu grobe Fallbacks können inkonsistente Zustände erzeugen.
- Unzureichende Logs erschweren Debugging massiv.
- Fehler früh validieren und klare HTTP-Statuscodes verwenden.
- Korrelation-IDs durch alle Komponenten propagieren.
- Fehler kontextreich und strukturiert loggen (JSON).
I/O & Ressourcen
- Anforderungs- und SLO-Definitionen
- Fehler- und Ausnahme-Taxonomie
- Logging- und Tracing-Infrastruktur
- Standardisierte Fehlerantworten
- Alerts, Metriken und Dashboards
- Dokumentation von Recovery-Strategien
Beschreibung
Error Handling beschreibt Strategien und Mechanismen zum Erkennen, Klassifizieren und Reagieren auf Fehler in Softwaresystemen. Es umfasst präventive Validierung, konsistente Fehlermeldungen, Rückfallpfade und Wiederherstellungsstrategien für robustes Laufzeitverhalten. Gutes Error Handling reduziert Ausfallzeiten und erleichtert Betrieb, Debugging und Nutzerkommunikation.
✔Vorteile
- Reduziert Ausfallzeiten durch klare Recovery-Strategien.
- Erleichtert Ursachenanalyse durch strukturierte Logs und Traces.
- Verbessert API-Interoperabilität durch standardisierte Fehlerformate.
✖Limitationen
- Nicht alle Fehler lassen sich vollständig automatisiert reparieren.
- Mehr Aufwand für Design, Logging und Tests erforderlich.
- Standardisierte Formate können domain-spezifische Details verbergen.
Trade-offs
Metriken
- Fehlerrate
Anteil fehlerhafter Anfragen pro Zeitspanne.
- Mean Time To Recover
Durchschnittliche Zeit bis zur Wiederherstellung nach einem Fehler.
- Anzahl kritischer Alerts
Häufigkeit von Alerts, die sofortiges Eingreifen erfordern.
Beispiele & Implementierungen
HTTP API mit RFC 7807 Fehlerformat
REST-API liefert standardisiertes Problem-JSON zur maschinenlesbaren Fehlerbehandlung.
Kompensationstransaktion als Recovery
Bei teilweisem Fehlschlag werden Kompensationsschritte ausgeführt, um Konsistenz wiederherzustellen.
Circuit Breaker bei Überlast
Schützt abhängige Services vor weiteren Requests bei wiederholten Fehlern.
Implementierungsschritte
Fehler-Taxonomie definieren und priorisieren.
Standardisiertes Fehlerformat und Codes festlegen.
Logging- und Tracing-Konventionen implementieren.
Fallbacks, Retries und Circuit Breaker einführen und testen.
⚠️ Technische Schulden & Engpässe
Tech Debt
- Legacy-Komponenten ohne standardisiertes Fehlerformat.
- Unvollständige Tests für Fehlerfälle und Timeouts.
- Fehlende Retention-Strategie für strukturierte Logs.
Bekannte Engpässe
Beispiele für Missbrauch
- Produktion loggt keine Korrelation-IDs, Debugging unmöglich.
- Client zeigt interne Fehlermeldung dem Endnutzer an.
- Automatische Retries ohne Idempotenz erzeugen doppelte Effekte.
Typische Fallen
- Fehlerdetails mit sensiblen Daten loggen.
- Zu viele Alerts (Alert Fatigue) durch unscharfe Regeln.
- Fallbacks, die inkonsistente Datenzustände erzeugen.
Erforderliche Fähigkeiten
Drivers (Architectural Drivers)
Constraints
- • Rechtliche Vorgaben zum Log-Handling
- • Beschränkte Ressourcen für Retention und Storage
- • Legacy-Systeme mit inkompatiblen Fehlerformaten