Heim >Backend-Entwicklung >PHP-Tutorial >Benutzerdefinierte PHP-Fehlerbehandlung
Normalerweise gibt PHP den schwerwiegenden Fehler direkt aus und gibt die Fehlerquelle (Dateiadresse, Zeilennummer) und den Grund usw. aus, sodass Entwickler das Problem leicht lokalisieren können. Manchmal werden diese Informationen jedoch aufgrund von php.ini-Einstellungen oder Konfigurationsproblemen mit dem Framework eines Drittanbieters nicht ausgegeben. Zu diesem Zeitpunkt müssen Sie lernen, relevante Parameter selbst festzulegen und diese Fehlermeldungen auszugeben, um das Problem schnell zu lokalisieren.
error_reporting ist ein globaler PHP-Konfigurationsparameter in php.ini. Wird zum Konfigurieren des Fehlerausgabepegels verwendet und kann zum Festlegen des Fehlerausgabepegels verwendet werden.
error_reporting(int $level): Wenn $level 0 ist, ist die Fehlerausgabe deaktiviert, d. h. es werden keine Fehler ausgegeben.
set_error_handler
PHPs standardmäßige Fehlerbehandlung besteht darin, die Nachricht auszugeben. Manchmal müssen Sie jedoch andere Vorgänge definieren. In diesem Fall müssen Sie die Fehlerbehandlungsfunktion anpassen.
php bietet die integrierte Funktion set_error_handler, die uns bei der Registrierung unserer eigenen Fehlerbehandlungsfunktionen hilft. Der Funktionsprototyp lautet wie folgt:
mixed set_error_handler ( callback $error_handler [, int $error_types = E_ALL | E_STRICT ] )
Es ist erwähnenswert, dass selbst wenn die Fehlerbehandlungsfunktion registriert ist, Das Standardverhalten ist weiterhin: Bei der Ausführung wird die Fehlermeldung weiterhin ausgegeben, wenn ein Fehler auftritt. Sie müssen daher die Fehlerstufe im Programm explizit auf 0 setzen und dann Ihre eigene Fehlerbehandlungsfunktion registrieren. Dieser Ansatz ist in einer Produktionsumgebung besonders wichtig, denn selbst wenn etwas schief geht, werden vertrauliche interne Fehlerinformationen nicht potenziell böswilligen Benutzern zugänglich gemacht. Es ist auch wichtig darauf hinzuweisen, dass benutzerdefinierte Fehlerbehandlungsfunktionen keine schwerwiegenden Fehler (z. B. Kompilierungsfehler) behandeln können.
Das Folgende ist ein Beispiel für die Verwendung einer benutzerdefinierten Fehlerbehandlungsfunktion:
<?php error_reporting(0); function error_handler($error_level, $error_message, $file, $line) { $exit = false; switch ($error_level) { case E_NOTICE: case E_USER_NOTICE: $error_type = 'Notice'; break; case E_WARNING: case E_USER_WARNING: $error_type = 'Warning'; break; case E_ERROR: case E_USER_ERROR: $error_type = 'Fatal Error'; $exit = true; break; default: $error_type = 'Unknown'; $exit = true; break; } printf("%s: %s in %s on line %d\n", $error_type, $error_message, $file, $line); if ($exit) { die(); } } set_error_handler('error_handler');
echo $novar;
echo 3 / 0;
trigger_error('Einen schwerwiegenden Fehler auslösen ' , E_USER_ERROR);
new NonExist();
Das Ausführen dieses Skripts erhält die folgende Ausgabe:
Hinweis: Undefinierte Variable: novar in /your/php_demo_file.php in Zeile 40
Warnung: Division durch Null in /your/php_demo_file.php in Zeile 41
Schwerwiegender Fehler: Löst einen schwerwiegenden Fehler in /your/php_demo_file.php in Zeile 42 aus
Okay, sehen Sie, die letzte „new NoExistClass()“-Ausnahme wurde von der benutzerdefinierten Fehlerbehandlungsfunktion nicht abgefangen.
Set_Exception_handler registriert übrigens die Ausnahmebehandlung der obersten Ebene. In Webanwendungen können Sie diese festlegen und dann einheitlich zur Fehlerbehandlungsseite springen.
Das Obige ist ein Fall der benutzerdefinierten PHP-Fehlerbehandlung. Ich hoffe, es kann allen helfen.
Verwandte Empfehlungen:
Ein Fall einer benutzerdefinierten PHP-Funktion, die eine Array-Vergleichsfunktion implementiert
Detaillierte Erläuterung der Codebeispiele für benutzerdefinierte PHP-/System-/Klassenkonstanten
Das obige ist der detaillierte Inhalt vonBenutzerdefinierte PHP-Fehlerbehandlung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!