Hallo MB,
klingt interessant
Isses aber nicht (danke Copacabana 😀)
Es kommt darauf an, technische und fachliche Fehler zu unterscheiden. Ein fachlicher Fehler ist: Den User gibt's nicht. Dann kannst Du null zurückgeben und das als gültige Rückgabe für "not found" betrachten. Eine separate existUser Abfrage ist aus meiner Sicht sinnlos und belästigt nur unnötig die DB.
Technischer Fehler gibt's reichlich: Die Datenbank ist störrisch (Timeout), das Passwort ist falsch, man hat kein Leserecht auf die User-Table, der DB-Server ist platt - also all das, was keinen sinnvollen Programmbetrieb zulässt. In dem Fall solltest Du eine Exception werfen, sofern mysqli oder PDO das nicht schon tut, und relativ hoch oben in deiner Logik mit try/catch abfangen. Der Exception Handler loggt die Exception und gibt dem User dann bekannt dass es technische Probleme gab. Gibt es im Callstack Stellen, wo Du bei einer Exception aufräumen musst, gehört da ebenfalls ein try-Block hin, ggf. ohne catch, es kann reichen nur ein finally zu verwenden. Wenn Du bei einem zwischengelagerten Exceptionhandler wirklich catch brauchst, muss die Exception normalerweise weitergeworfen werden. Exceptions wegzufangen und gegenüber dem Aufrufer so zu tun als wäre alles gut ist normalerweise falsch - es sei denn, du kannst aus der Exception-Situation heraus das Programm sinnvoll fortsetzen.
Die grundsätzlichen Erklärungen zum Exception Handling auf php.net finde ich sehr dürftig, wenn Du da Fragen hast, gerne.
Rolf
sumpsi - posui - clusi