Zunächst möchte ich darauf hinweisen, dass die PHP-Version des Autors 7.2 ist.
Empfohlen (kostenlos): PHP7
Übersicht über Ausnahmen und Fehler
Ausnahme bezieht sich auf Situationen, die nicht den Erwartungen entsprechen und sich vom normalen Ablauf während des Programmbetriebs unterscheiden.
Wenn Sie beispielsweise eine Verbindung zur Datenbank herstellen und alle Parameter geschrieben werden, der Link jedoch nicht verbunden werden kann, ist dies nicht wie erwartet.
Kann durch Try-Catch abgefangen werden. Was ist ein Fehler?
Zum Beispiel:
Schwerwiegender Fehler
> Hinweis
>Veraltet
try{ …… }catch(Throwable $e){ …… }
Manchmal kann der mit PHP gelieferte Fehlerhandler unsere Anforderungen nicht vollständig erfüllen. Manchmal müssen wir alle die Ausnahmebehandlung manuell neu schreiben.
set_error_handler()
Funktion zum Hosten des Fehlerhandlers, der angepasst werden kann Fehlerbehandlung Verfahren.
Wenn im Code vor dieser Funktion ein Fehler auftritt, wird unsere benutzerdefinierte Verarbeitungsfunktion nicht aufgerufen, da sie noch nicht registriert wurde.Nach dem Festlegen dieser Funktion ist error_reporting() ungültig.Parse error
>Fatal Error
> Waning
> Notice
>Deprecated
Deprecated 最低级别的错误(不推荐,不建议) 使用一些过期函数的时候会出现,程序继续执行 Notice 通知级别的错误 使用一些未定义变量、常量或者数组key没有加引号的时候会出现,程序继续执行 E_NOTICE // 运行时通知。表示脚本遇到可能会表现为错误的情况. E_USER_NOTICE // 用户产生的通知信息。Waning 警告级别的错误 程序出问题了,需要修改代码!!!程序继续执行 E_WARNING // 运行时警告 (非致命错误)。 E_CORE_WARNING // PHP初始化启动过程中发生的警告 (非致命错误) 。 E_COMPILE_WARNING // 编译警告 E_USER_WARNING // 用户产生的警告信息Fatal Error 错误级别的错误 程序直接报错,需要修改代码!!!中断程序执行,可使用register_shutdown_function()函数在程序终止前触发一个函数 E_ERROR // 致命的运行错误,错误无法恢复,暂停执行脚本 E_CORE_ERROR // PHP启动时初始化过程中的致命错误 E_COMPILE_ERROR // 编译时致命性错,就像由Zend脚本引擎生成了一个E_ERROR E_USER_ERROR // 自定义错误消息。像用PHP函数trigger_error(错误类型设置为:E_USER_ERROR)Parse error 语法解析错误 语法检查阶段报错,需要修改代码!!!中断程序执行,除了修改ini文件,将错误信息写到日志中,什么也做不了 E_PARSE //编译时的语法解析错误
自定义错误处理程序
有的时候,php 中自带的错误处理程序,并不能完全满足我们得需要,大部分时候,我们都需要手动重写异常处理。
php 给我们提供了三个函数来帮助我们来处理,分别是
set_error_handler()
set_exception_handler()
register_shutdown_function()
error_get_last()
它能获取最后发生的错误。举例 register_shutdown_function('shutdown');function shutdown(){ if ($error = error_get_last()) { var_dump($error); } }$name //没写 ; 号
执行结果 Parse error: syntax error, unexpected ';' in /app/swoole/errorDemo.php on line 34
Fehler auf den folgenden Ebenen können nicht auftreten Wird von benutzerdefinierten Funktionen verwendet. Zu behandeln: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING. Diese Funktion kann nur einige unserer Fehler auf Warnungs- und Hinweisebene abfangen /code>
Wird für die Behandlung nicht abgefangener Ausnahmen verwendet
register_shutdown_function()
error_get_last()
zusammengearbeitet werden, um den zuletzt aufgetretenen Fehler abzurufen. rrreee🎜Ausführungsergebnis 🎜Parse-Fehler: Syntaxfehler, unerwartetes ';' in /app/swoole/errorDemo.php in Zeile 34
🎜 Emmmmm Ist das nicht Unsinn? Es ist offensichtlich nicht ausgeführt?🎜🎜Der Grund dafür ist, dass unser PHP vor der Ausführung des Programms zunächst die Syntaxprobleme unseres Programms überprüft. Wenn es keine Probleme gibt, können wir unser Programm ausführen. 🎜🎜Unser obiger Code hat unsere Syntaxprüfung nicht bestanden, daher wurde direkt ein Fehler gemeldet. 🎜🎜Die Frage ist also? Warum melden uns die Frameworks immer Fehler, wenn wir uns im Framework befinden? 🎜🎜Framework-Fehlerbehandlung🎜🎜Im Framework wird sein Code über eine Eintragsdatei geladen. Wenn unser PHP Syntaxfehler erkennt, überprüfen wir nur unsere index.php, wenn dies erforderlich ist, wird dies nicht erkannt. Wenn unser Code einen Fehler macht, wird dieser zur Laufzeit erkannt, sodass unser Framework entsprechend reagieren kann🎜Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Ausnahme- und Fehlerbehandlung in PHP7. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!