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(); }
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('<b>register_shutdown_function: Type:' . $error['type'] . ' Msg: ' . $error['message'] . ' in ' . $error['file'] . ' on line ' . $error['line'] . '</b>'); } }
//注册异常处理函数, 没有捕获处理的异常,将统一再这里处理 set_exception_handler('myException'); function myException($exception) { var_dump("<b>set_exception_handler: Exception: " . $exception->getMessage() . '</b>'); }
//注册错误处理函数 set_error_handler('myError'); function myError($type, $message, $file, $line) { //var_dump('<b>set_error_handler: ' . $type . ':' . $message . ' in ' . $file . ' on ' . $line . ' line .</b><br />'); throw new Exception($message); }Nach dem Login kopieren
Das Prinzip, alle Fehler abzufangenAus 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.
ZusammenfassungDrei 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 abfangenset_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!