dedlfix: set_error_handler und Exception

Beitrag lesen

problematische Seite

Tach!

Und seitdem wird nicht die PDOException ausgegeben sondern der hier anfallende $errstr.

die Beschreibung von set_error_handler() im Handbuch sagt leider nichts dazu, aber anscheinend hebelt der Error-Handler die try/catch-Methode aus.

Das Handbuch sagt deshalb nichts dazu, weil sich set_error_handler() nicht um Exceptions kümmert. Ob mit oder ohne try/catch, der Custom Error Handler wird nicht aufgerufen. Ohne try/catch stirbt das Script mit einem Fatal Error wegen Uncaught PDOException.

Ich halte das für einen Bug, denn meine Funktion dd() erzeugt ja keinen Fehler.

Ähm, nein, aber die Exception, die vorher der catch-Zweig aufgefangen hat, ist jetzt vermutlich der Fehler, den der Error-Handler meldet.

Nicht richtig vermutet. Wenn der Error Handler losläuft, dann aus anderem Grunde, aber nicht wegen der Exception.

Hast du alternativ mal set_exception_handler() angeschaut? Da heißt es zumindest klar und deutlich: "if an exception is not caught within a try/catch block". Möglicherweise ist das ein entscheidender Unterschied zu set_error_handler().

Zumindest läuft der Exception Handler los, wenn kein catch mit passendem Exception-Typ im Spiel ist.

Wer auch immer den Error Handler aufruft, der gezeigte Code macht es jedenfalls nicht.

dedlfix.