English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
PHP Fehler & Protokollierungen Referenzhandbuch
Die Funktion set_error_handler() setzt den benutzerdefinierten Fehlerbehandlungsprogramm
mixed set_error_handler (callback $error_handler[, int $error_types]);
Legen Sie die Benutzerfunktion (error_handler) fest, um Fehler im Skript zu behandeln.
Diese Funktion kann verwendet werden, um laufende Fehler auf Ihre Weise zu behandeln, z.B. wenn in einer Anwendung schwerwiegende Fehler auftreten oder ein Fehler unter bestimmten Bedingungen ausgelöst wird (verwenden Sie trigger_error()), müssen Sie die Daten/Dateien werden bereinigt und recycelt.
Es ist wichtig zu beachten, dass alle Fehler, die in error_types angegeben sind, den Standardfehlerbehandlungsprogramm von PHP umgehen, es sei denn, die Callback-Funktion gibt FALSE zurück. Die Einstellung von error_reporting() hat keine Wirkung, und Ihr Fehlerbehandlungsprogramm wird weiterhin aufgerufen - aber Sie können den aktuellen Wert von error_reporting erhalten und entsprechend behandeln. Besonders zu beachten ist der @ vor error-Wenn ein Fehler in einem Statement mit dem Präfix control operator auftritt, ist dieser Wert 0.
Bitte beachten Sie, dass Sie bei Bedarf die Funktion die() verwenden müssen. Wenn der Fehlerbehandlungsprogramm zurückkehrt, wird das Skript ab der nachfolgenden Zeile fortgesetzt, an der der Fehler aufgetreten ist.
Fehler dieser Ebenen können nicht von benutzerdefinierten Funktionen behandelt werden: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING und die meisten E_STRICT, die im Datei, in der set_error_handler() Funktion aufgerufen wird, erstellt werden.
Wenn ein Fehler vor der Ausführung des Skripts auftritt (z.B. bei der Dateiupload), wird der benutzerdefinierte Fehlerbehandlungsprogramm nicht aufgerufen, da es sich zu diesem Zeitpunkt noch nicht registriert hat.
Nummer | Parameter und Beschreibung |
---|---|
1 | error_handler (obligatorisch) Es legt fest, welche Funktion bei Fehlern ausgeführt wird. Nachfolgend ist die Syntax von error_handler angegeben. |
2 | error_types (optional) Es legt fest, auf welcher Fehlerberichterstattungsebene benutzerdefinierte Fehler angezeigt werden. Der Standardwert ist "E_ALL". Weitere mögliche Fehlerberichterstattungsebenen finden Sie unter "PHP-Fehler und Protokollierung Konstanten: " |
error_function(error_level, error_message, error_file, error_line, error_context);
Dies ist die Beschreibung von paramenter-
errno - Der erste Parameter errno enthält den Fehlerlevel, ist ein Integer.
errstr - Der zweite Parameter errstr enthält die Fehlerinformationen, ist ein String.
errfile - Der dritte Parameter ist optional, errfile, und enthält den Dateinamen, an dem der Fehler aufgetreten ist, als String.
errline - Der vierte Parameter ist optional, errline, und enthält die Zeilennummer, an der der Fehler aufgetreten ist, als Integer.
errcontext - Der fünfte optionale Parameter, errcontext, ist ein Array, das auf die aktive Symboltabelle zum Zeitpunkt des Fehlers verweist. Dies bedeutet, dass errcontext ein Array aller Variablen im Bereich, in dem der Fehler ausgelöst wurde, enthält. Der Benutzer sollte das Fehlerkontext nicht ändern.
Wenn ein Fehlerbehandlungsprogramm bereits definiert wurde, wird der String mit dem Namen des Programms zurückgegeben; ist es ein internes Fehlerbehandlungsprogramm, wird NULL zurückgegeben. Wenn eine ungültige Callback-Funktion angegeben wird, wird ebenfalls NULL zurückgegeben. Wenn das vorherige Fehlerbehandlungsprogramm eine Methode einer Klasse ist, wird eine mit dem Namen der Klasse und der Methode versehene indizierte Array zurückgegeben.
Hier ist die Verwendung des set_error_handler-Funktion:
<?php function customError($errno, $errstr, $errfile, $errline) { echo "Benutzerdefinierter Fehler: [$errno] $errstr\n"; echo "Fehler in Zeile $errline in $errfile\n"; echo "Ending Script"; die(); } //Fehlerbehandlungsprogramm einrichten set_error_handler("customError"); $test = 0; //Fehler auslösen if ($test > -1) { trigger_error("Ein benutzerdefinierter Fehler wurde ausgelöst"); } ?>Testen sehen‹/›
Ausgabeergebnis:
Benutzerdefinierter Fehler: [1024Es wurde ein benutzerdefinierter Fehler ausgelöst. Fehler in Zeile 16 in /home/cg/root/1531703/main.php Ending Script