Heim  >  Artikel  >  Backend-Entwicklung  >  So passen Sie Fehleraufforderungen in PHP an

So passen Sie Fehleraufforderungen in PHP an

藏色散人
藏色散人Original
2021-06-02 15:38:281431Durchsuche

In PHP können Sie die Fehlerbehandlung über die Funktion „set_error_handler()“ anpassen. Die Funktion dieser Funktion besteht darin, eine andere Funktion als Fehlerbehandlungsfunktion anzugeben. Die Syntax lautet wie folgt: „set_error_handler(callable $error_handler...)“ ".

So passen Sie Fehleraufforderungen in PHP an

Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP-Version 7.1, DELL G3-Computer

Wie passe ich Fehleraufforderungen in PHP an?

PHP set_error_handler(): Benutzerdefinierte Fehlerbehandlungsfunktion

PHP bietet einen set_error_handler () Mit dieser Funktion können Sie eine andere Funktion als Fehlerbehandlungsfunktion angeben. Die Syntax lautet wie folgt:

set_error_handler(callable $error_handler [, int $error_types = E_ALL | E_STRICT ])

Parameterbeschreibung

1) $error_handler ist ein benutzerdefinierter Funktionsname Als Funktionsnamen können Sie auch NULL übergeben. Um den Handler auf seinen Standardzustand zurückzusetzen, können Sie auch ein Array von Referenzobjekten und Objektmethodennamen übergeben.

Das Format der benutzerdefinierten Funktion ist wie folgt:

error_handler(int $errno , string $errstr [, string $errfile [, int $errline [, array $errcontext ]]])

Unter ihnen:

Der erste Parameter $errno stellt die Fehlerstufe dar, die ein ganzzahliger Typ ist;

Der zweite Parameter $errstr stellt die Fehlerinformationen dar, Das ist ein String-Typ.

Der dritte Parameter $errfile ist ein optionaler Parameter, der den Dateinamen angibt, in dem der Fehler aufgetreten ist, und ein String-Typ.

Der vierte Parameter $errline ist ebenfalls ein optionaler Parameter, der die Zeilennummer angibt wo der Fehler aufgetreten ist und ein ganzzahliger Typ ist;

Der fünfte Parameter $errcontext ist ebenfalls ein optionaler Parameter (veraltet nach PHP7.2.0), der das Array der aktiven Symboltabellen darstellt, wenn ein Fehler auftritt. Das heißt, $errcontext enthält ein Array aller Variablen in dem Bereich, in dem der Fehler ausgelöst wurde. Der Fehlerhandler des Benutzers sollte den Fehlerkontext nicht ändern.

Hinweis: Wenn die Funktion set_error_handler() FALSE zurückgibt, wird weiterhin der Standard-Fehlerhandler aufgerufen.

2) Der Parameter $error_types ist genau wie der Parameter error_reporting in der Konfigurationsdatei php.ini, der die Anzeige von Fehlern steuern kann. Mit diesem Parameter kann das Auslösen von $error_handler blockiert werden. Ohne diese Maske wird $error_handler bei jedem Fehler aufgerufen, unabhängig davon, wie $error_reporting eingestellt ist.

Wenn zuvor ein Fehlerhandler definiert wurde, wird der Programmname zurückgegeben. Wenn es sich um einen integrierten Fehlerhandler handelt, wird NULL zurückgegeben. Wenn eine ungültige Callback-Funktion angegeben ist, wird auch NULL zurückgegeben. Wenn der vorherige Fehlerhandler eine Klassenmethode war, gibt diese Funktion ein indiziertes Array mit den Klassen- und Methodennamen zurück.

【Beispiel】Passen Sie eine Fehlerbehandlungsfunktion an und verwenden Sie sie zur Behandlung von Fehlern im Programm.

<?php
    function error_handler($errno, $errstr, $errfile, $errline ) {
        echo "error number:".$errno."<br/>";
        echo "error msg:".$errstr."<br/>";
        echo "error file:".$errfile."<br/>";
        echo "error line:".$errline."<br/>";
        die(&#39;something error&#39;);
    }
    set_error_handler("error_handler");
    strpos();
?>

Die laufenden Ergebnisse sind wie folgt:

error number:2
error msg:strpos() expects at least 2 parameters, 0 given
error file:D:\WWW\index.php
error line:10
something error

Hinweis: Verwenden Sie diese Methode zur Fehlerbehandlung. Wenn die Ausführung des Programms in der Fehlerbehandlungsfunktion nicht beendet wird, führt das Programm die nächste Zeile aus, in der der Fehler aufgetreten ist , daher müssen Sie die Funktion die() verwenden, um das Programm zu beenden.

Es ist außerdem zu beachten, dass diese Fehlerbehandlungsmethode nicht alle Ebenen von Programmfehlern übernehmen kann. Fehler in den Abschnitten E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING und E_STRICT werden in ihrer ursprünglichen Form angezeigt.

set_error_handler() Advanced

Der Ausnahmebehandlungsmechanismus von PHP ist nicht perfekt und kann keine Ausnahmen automatisch auslösen. Benutzer können set_error_handler() auch verwenden, um Ausnahmen als Fehler zu behandeln, sodass Benutzer benutzerdefinierte Fehler verwenden können. Die Handlerfunktion fängt Ausnahmen automatisch ab.

【Beispiel】Verwenden Sie eine benutzerdefinierte Fehlerbehandlungsfunktion, um Ausnahmen automatisch abzufangen.

<?php
    function error_handler($errno, $errstr, $errfile, $errline ) {
        echo "error number:".$errno."<br/>";
        echo "error msg:".$errstr."<br/>";
        echo "error file:".$errfile."<br/>";
        echo "error line:".$errline."<br/>";
        die(&#39;something error&#39;);
    }
    set_error_handler("error_handler");
    /* 触发异常 */
    try {
        $a = 5/0;
        echo $a;
    } catch(Exception $e) {
        echo $e->getMessage();
    }
?>

Die laufenden Ergebnisse sind wie folgt:

error number:2
error msg:Division by zero
error file:D:\WWW\index.php
error line:12
something error

Wenn das Programm die Anweisung $a = 5/0; in Zeile 12 ausführt, fängt das Programm diese Ausnahme automatisch ab und behandelt sie mit einer benutzerdefinierten Funktion.

Empfohlenes Lernen: „PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonSo passen Sie Fehleraufforderungen in PHP an. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn