pgoetz: MichiLee

Beitrag lesen

Servus,

[...]
Ich frage mich nun, wenn ein Fehler beim UserModel ankommt, wie er es handhaben sollte. Laut Sven sollte man ja nicht alle Fehler bis zum Controller weiterreichen, (Bsp. mysql-Treiber konnte nicht gefunden usw.)

Da gibt es sehr viele verschiedene Herangehensweisen. Ich handhabe es so: handelt es sich um eine Exception, deren Auswirkung ich an Ort und Stelle beheben kann (z.B. Konfiguration nicht gefunden aber Defaultwerte vorhanden), dann fange ich die Exception und mache im catch-Block etwas sinnvolles. Ansonsten definiere ich für jede Schicht ein entsprechendes Set an Exceptions (das dürften die Helfer im anderen Thread auch schon genannt haben). Diese Exceptions sind für die jeweilige Schicht immer passend. So gibt mir die Serviceschicht keine SQL-Exceptions zurück, sondern z.B. ein UserNotFoundException. In den jeweils darüber liegenden Schichten höre ich auf diese Exceptions und arbeite nach der o.a. Regel: kann ich was sinnvolles tun, tu ich es, ansonsten schmeiß ich eine Schicht-spezifische und sinnvolle Exception (z.B. aus einer SQL-Exception des Persistence-Layer wird eine entsprechende fachliche Exception (z.B. UserNotFoundException) im Service-Layer). Ganz oben in der GUI muss ich dann aus den entsprechenden Service-Exceptions Fehlermeldungen bauen. Wobei hier in vielen Fällen der Benutzer keinen genauen Grund genannt bekommt, sondern einfach einen "Technischer Fehler" serviert bekommt. Die Details interessieren nur den Admin und die Entwicklung (und die lesen das Log).

[...]
Also habe ich zweimal das UserModel aufgerufen. Oder, ob ich vieles gleich vom Model erledigen lassen sollte, wenn er kein User findet, dass er dann selebr von sich aus prüft, dass es den Benutzer nicht gibt usw.
Ich glaube, das erstere wäre wohl besser :-)

Ich bin der Meinung, dass jeder das machen sollte, was er am besten kann. Wenn das UserModel für die Ermittlung von Usern zuständig ist, dann lass es das auch tun. Hier kann man in meinen Augen keinen allgemein gültigen Rat geben. Mach es erst mal auf eine Art und schau den Code in einem halben Jahr wieder an. Wenn er Dir gefällt: gut. Wenn nicht, dann mach es dann anders. Refaktorisiert wird eh immer. :)

Viel Erfolg weiterhin!

Peter