Melvin Cowznofski: PDO Exception in eigenem Namespace

Beitrag lesen

Hallo,

ich hatte gestern das Problem, dass bei einem Verbindungsaufbau zu einer MySQL Datenbank mittels PDO keine Exceptions mehr abgefangen worden sind. Mit den richtigen Zugangsdaten wurde eine Verbindung mit der DB problemlos hergstellt, habe ich User, DB, Host oder Passwort absichtlich falsch geschrieben, dann kam nicht wie erwartet die Exception Message, sondern ein "Fatal error: Uncaught exception 'PDOException' with message ...".

Ich habe stundenlang versucht, die Ursache für diesen Fehler zu finden, bis ich endlich herausgefunden hatte, dass mein eigener Namespace dafür verantwortlich war. Ohne Angabe eines eigenen Namespaces kam die Exception Message dann nämlich wieder wie erwartet ohne der Fehlermeldung.

Bei einer weiteren Recherche fand ich dann nach langer Suche endlich heraus, dass man das Problem löst, in dem man statt einem try{} catch(PDOException $e){} einen try{} catch(\PDOException $e){} Block schreibt.

Nun ist mein Problem zwar gelöst, ich würde mir die Sache aber gerne noch erklären lassen hier.

Mir ist klar, dass ich, nachdem ich einen eigenen Namespace verwende, am Anfang der Seite gleich nach der Namensangabe ein use \PDO; schreibe, um anzugeben, dass die PDO Klasse nicht zu meinem eigenen Namespace gehört. Aber wieso verlangt dann die Exception Angabe auch nach einem Backslash? Ein try/catch Block ist doch was "Allgemeines", das hat doch mit dem Namespace nichts zu tun?!

PS: Bin ich zu blöd, um es zu finden oder gibt es im neuen Forum kein PHP Syntax Highlighting mehr?

Mit lieben Grüßen

Melvin Cowznofski

--
Melvin Cowznofski What – me worry?