Ein Blick auf die Ausnahme- und Fehlerbehandlung von PHP

coldplay.xixi
Freigeben: 2023-04-08 18:38:02
nach vorne
2682 Leute haben es durchsucht


Ein Blick auf die Ausnahme- und Fehlerbehandlung von PHP

Ausnahmen und Fehler

Beispiel:

  $num = 0;
    try {
        echo 1/$num;
    } catch (Exception $e){
        echo $e->getMessage();//并不能执行到这里
    }
    //说明try{}catch{}是用于捕获异常的,而错误是不能捕获到的。
 
    //手动抛出异常进行捕获
    $num = 0;
    try {
        if($num == 0){
            //通过if判断可以处理错误,手动抛出异常(如何实现自动捕获错误呢,需结合三个php内置函数)
            throw new Exception('除数为零');
        }
        echo 1/$num;
    } catch (Exception $e){
        echo $e->getMessage();
    }
Nach dem Login kopieren

Was ist Ausnahme

Eine Situation, die nicht den Erwartungen entspricht, tritt auf, wenn das Programm ausgeführt wird. Es darf passieren (Sie möchten nicht, dass es zu einer abnormalen Situation kommt), aber es ist eine abnormale Situation. Gemäß unserer normalen Logik sind Fehler, die nicht auftreten sollten, aber dennoch auftreten, Fehler in der Logik und in Geschäftsprozessen, keine Kompilierungs- oder Syntaxfehler.

Was ist ein Fehler?

Es ist ein Problem des PHP-Skripts selbst und wird meistens durch eine falsche Syntax verursacht Serverumgebung, was dazu führt, dass der Compiler die Prüfung nicht besteht oder sogar nicht funktioniert. Warnung und Hinweis sind beide Fehler, aber ihre Ebenen sind unterschiedlich und Fehler können nicht durch Try-Catch erfasst werden

Fehlerklassifizierung

Schwerwiegender Fehler: Schwerwiegender Fehler (Skript beendet)

E_ERROR // Schwerwiegender Ausführungsfehler, der Fehler kann nicht behoben werden und die Ausführung des Skripts wird angehalten

E_CORE_ERROR // Während des Initialisierungsprozesses beim PHP-Start Schwerwiegender Fehler

E_COMPILE_ERROR // Schwerwiegender Fehler zur Kompilierungszeit, als ob ein E_ERROR von der Zend-Skript-Engine generiert worden wäre

E_USER_ERROR // Benutzerdefinierte Fehlermeldung. Wie die Verwendung der PHP-Funktion trigger_error (der Fehlertyp ist auf E_USER_ERROR eingestellt)

Parse-Fehler: Parsing-Fehler bei der Kompilierungszeit, Syntaxfehler (Skript wird nicht ausgeführt)

E_PARSE // Syntax-Parsing bei der Kompilierung Fehler

Warnungsfehler: Warnfehler (es werden nur Eingabeaufforderungsinformationen ausgegeben, das Skript bricht die Ausführung nicht ab)

E_WARNING // Laufzeitwarnung (nicht schwerwiegender Fehler).

E_CORE_WARNING // Warnung (nicht schwerwiegender Fehler), die während des PHP-Initialisierungsstarts aufgetreten ist.

E_COMPILE_WARNING // Kompilierungswarnung

E_USER_WARNING // Vom Benutzer generierte Warnmeldung

Hinweisfehler: Benachrichtigungsfehler (es werden nur Benachrichtigungsinformationen angegeben, die Ausführung des Skripts wird nicht beendet)

E_NOTICE // Laufzeitbenachrichtigung. Zeigt an, dass das Skript auf eine Situation stößt, die als Fehler erscheinen kann.

E_USER_NOTICE // Vom Benutzer generierte Benachrichtigungsinformationen.

Typ 5 ist ein Fehler der Stufe ERROR, der direkt zum Beenden des PHP-Programms führt. Sie sind ERROR = E_ERROR |. E_COMPILE_ERROR |. E_PARSE

Verwenden Sie try {} e){} Um Ausnahmen und Fehler abzufangen, müssen Sie drei Funktionen verwenden:

// 注册一个会在php中止时执行的函数
    register_shutdown_function('myShutdownFunction');
    function myShutdownFunction()
    {
        if ($error = error_get_last()) {
            var_dump(&#39;<b>register_shutdown_function: Type:&#39; . $error[&#39;type&#39;] . &#39; Msg: &#39; . $error[&#39;message&#39;] . &#39; in &#39; . $error[&#39;file&#39;] . &#39; on line &#39; . $error[&#39;line&#39;] . &#39;</b>&#39;);
        }
    }
Nach dem Login kopieren
//注册异常处理函数, 没有捕获处理的异常,将统一再这里处理
    set_exception_handler(&#39;myException&#39;);
    function myException($exception)
    {
        var_dump("<b>set_exception_handler: Exception: " . $exception->getMessage()  . &#39;</b>&#39;);
    }
Nach dem Login kopieren

 //注册错误处理函数
    set_error_handler(&#39;myError&#39;);
    function myError($type, $message, $file, $line)
    {
        //var_dump(&#39;<b>set_error_handler: &#39; . $type . &#39;:&#39; . $message . &#39; in &#39; . $file . &#39; on &#39; . $line . &#39; line .</b><br />&#39;);
        throw new Exception($message);
    }
Nach dem Login kopieren


Das Prinzip, alle Fehler abzufangen

Aus set_error_handler () ist ersichtlich, dass es einige Fehler abfangen kann, jedoch keine Fehler auf Systemebene wie E_ERROR, E_PARSE und andere, dieser Teil jedoch von register_shutdown_function() erfasst werden. Daher kann die Kombination beider sehr gute Funktionen ergeben.

Zusammenfassung

Drei Funktionen zum automatischen Erfassen von Ausnahmen und Fehlern

set_error_handler () kann nur einige Fehler erfassen

register_shutdown_function () kann in Kombination mit der Funktion set_error_handler() alle Fehler abfangen

set_Exception_handler () wird zum Abfangen von Ausnahmen verwendet

error_get_last () und beendet schließlich die Fehlermeldung

In der Funktion, die den Fehler abfängt, lösen Sie die Ausnahme manuell aus, d. h. implementieren Sie set_Exception_handler, um den Fehler abzufangen.

Empfohlenes Tutorial: „

PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonEin Blick auf die Ausnahme- und Fehlerbehandlung von PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage