2 Stimmen

Auslösen von Fehlern aus dem Exception-Handler

Da ich bereits einen benutzerdefinierten PHP-Fehler-Handler habe, ist es sinnvoll, einen Ausnahme-Handler als "Forwarder" wie diese zu definieren:

function exception_handler(Exception $e) {
    trigger_error($e->getMessage(), E_USER_ERROR);
}
set_exception_handler('exception_handler');

Die Idee ist, den bereits vorhandenen Error-Handler auch für die Behandlung von Ausnahmen zu verwenden, um die Wiederholung desselben Codes zu vermeiden. Führt das Auslösen eines Fehlers innerhalb eines Exception-Handlers zu Problemen?

1voto

MitMaro Punkte 5277

Damit habe ich überhaupt kein Problem. Ich habe das gleiche Setup, mein Fehler-Handler mailt mich mit Ausnahmen sowie Fehler.

Hier ist mein Exception-Handler, ich habe in den Fehler, dass ich eine nicht abgefangene Ausnahme haben. Auf diese Weise weiß ich, dass es durch eine Ausnahme und nicht durch einen Fehler verursacht wurde. Es wird auch sagen, mir die Ausnahme, weil der get_class.

function exception_handler(Exception $e) {
  trigger_error('Uncaught ' . get_class($e) . ', code: ' . $e->getCode() . "<br/>\n Message: " . htmlentities($e->getMessage()), E_USER_WARNING);
}

Da mein Fehler-Handler eine HTML-E-Mail sendet, habe ich html im Ausnahme-Handler. Vielleicht möchten Sie das entfernen.

1voto

Asaph Punkte 153684

Ich habe schon öfter Fehler und Ausnahmen in PHP-Code gesehen. Technisch gesehen sollte das zwar keine Probleme verursachen, aber es wird wahrscheinlich zu Verwirrung bei den Entwicklern führen, die den Code pflegen. Wenn Sie die Zeit haben, sollten Sie Ihren gesamten trigger_error-Code überarbeiten und stattdessen Exceptions verwenden. Natürlich müssen Sie mit allen trigger_error-Fehlern leben, die PHP selbst erzeugt, aber hoffentlich können Sie die meisten dieser Situationen vermeiden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X