Der Martin: Rückgabewerte und Fehlerbehandlung allgemein bzw. am Beispiel

Beitrag lesen

Hallo,

Fehlerbehandlung über Rückgabewerte ist meist eine ziemlich unsaubere Angelegenheit.

da kann man unterschiedlicher Meinung sein - ich finde, Status- oder Fehlerinformationen über das Funktionsergebnis zurückzugeben, ist die sauberste Methode.
Ich gestalte meine Funktionen immer so, dass sie
 a) in eingfachen Fällen das gewünschte Resultat oder einen klar definierten Fehlerwert liefern
 b) oder grundsätzlich nur einen Statuscode zurückgeben (in der Regel 0 für erfolgreiche Ausführung), und ihre "Nutzlast" über Argumente, die als Referenz übergeben werden.

und dann wird auch noch der aufrufende Code komplizierter, weil man diese Rückgabewerte abprüfen muss.

Das muss man im Prinzip sowieso. Ob man eine Handvoll Exceptions bastelt oder ein Funktionsergebnis auf ein paar konkrete Werte abprüft, läuft ungefähr auf dasselbe hinaus.

Glücklicherweise wurde ein Konzept entwickelt, um das Problem zu umgehen: Exceptions.

Genau das führt meiner Ansicht nach zu schwer durchschaubarem "Spaghetti-Code". Exceptions vermeide ich, wenn immer es geht, weil -da stimme ich frankx aus vollem Herzen zu- sie aus dem regulären Programm- oder Kontrollfluss ausbrechen.

Die PHP-API arbeitet wahrscheinlich in solchen Fällen oft mit Rückgabewerten, sie ist aber auch nicht gerade ein Beispiel für gutes API-Design.

Das einzig Negative ist da meiner Ansicht nach, dass der Rückgabewert bei vielen Funktionen je nach Situation entweder die "Nutzlast" transportiert oder eine Fehlerinformation. Macht man das aber konsequent, ist das eine saubere Sache.

Schönes Wochenende,
 Martin

--
Ich liebe Politiker auf Wahlplakaten.
Sie sind tragbar, geräuschlos, und leicht wieder zu entfernen.
  (Loriot, deutscher Satiriker)