Der Martin: set_error_handler und Exception

Beitrag lesen

problematische Seite

Hallo,

        try{
            ...
        }
        catch(PDOException $e){ dd("Keine Verbindung zur DB"); }

wobei dd("Keine Verbindung zur DB"); auch nur diesen Text ausgibt. Nun habe ich einen ErrorHandler gesetzt:

set_error_handler( function($errno, $errstr, $errfile, $errline){
    ...
}, E_ALL);

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.

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.

Wenn das kein Bug ist, kann ich mir das try/catch auch schenken. Meinung?

Meinung: Ja, scheint so.
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().

Ciao,
 Martin

--
Frage an die Kollegin am Montagmorgen: "Na, wie war dein Wochenende?"
Depressive Kollegin: "Hell, dunkel, hell, dunkel, Montag."