Sven Rautenberg: Wie am besten Fehlermeldungen handlen

Beitrag lesen

Moin!

Ich frage mich grad nur noch nur, ob ich Zugriff auf die Message habe, wenn ich weiter oben die Exception abfange oder weiterreiche, welches ich unten etwa so geworfen hatte:

throw new myException("Mein Text");

Da, wo du die Exception fängst, steht dir deren volles Programm an Eigenschaften und Methoden zur Verfügung.

Und wenn du eine neue Exception werfen willst, lässt sich deren Message auch aus Teilen der alten Message zusammensetzen, sofern dir das sinnvoll erscheint.

Du kannst dir natürlich auch deine eigene Exception so erweitern, dass du in der Exception die relevanten Daten der gefangenen Exception nochmal kopiert weiterreichst. Allerdings wäre das ein unguter Verstoß gegen das Prinzip der "Separation of Concern". Deine Model-Klasse interessiert es wenig, dass deiner Querybuildingklasse der Datenbanktreiber verloren gegangen ist und der Query deshalb scheiterte. Ebenso interessiert es den Controller nicht, welches Datenbankproblem nun genau zum Scheitern des Model-Ladens geführt hat. Das Model-Object konnte nicht in den Speicher befördert werden - das ist das Entscheidende. Nicht alle Models kommen aus einer Datenbank, deshalb interessiert der Datenbankfehler nur die Entwickler zum Bugfixing.

- Sven Rautenberg