Heim >Backend-Entwicklung >PHP-Tutorial >Detaillierte Erläuterung der Fehler- und Ausnahmebehandlung in PHP
Jeder Programmierer ist möglicherweise während der Entwicklung auf Fehler gestoßen oder auf Fehler, die aus anderen Gründen verursacht wurden. Wenn der Benutzer nicht bereit ist oder die Einschränkungen der Anwendung nicht befolgt, führt dies natürlich auch zu Fehlern bei der Verwendung. Der folgende Artikel führt Sie hauptsächlich in die häufige Fehler- und Ausnahmebehandlung in PHP ein. Freunde, die es benötigen, können darauf verweisen,
Vorwort
Wann Wenn wir ein Programm entwickeln, kommt es sehr häufig vor, dass das Programm Probleme hat. Wie gehen wir mit Ausnahmen und Fehlern um? Dieser Artikel führt Sie im Detail in den relevanten Inhalt von PHP-Fehlern und der Ausnahmebehandlung ein und teilt ihn als Referenz und zum Studium. Ich werde im Folgenden nicht viel sagen, werfen wir einen Blick auf die detaillierte Einführung:
1 , PHP-Fehlerbehandlung
1. Syntaxfehler
2. Laufzeitfehler
3 . Logischer Fehler: Keine Eingabeaufforderung. Fehler, aber die Funktion ist falsch, am problematischsten >5. Fehlerbericht zeigt:
Nur Um die Fehleranzeige in einem Skript zu ändern, können Sie
(empfohlen)error_reporting=E_ALL & ~E_NOTICE
verwenden. 6. Benutzerdefinierter Fehlerbericht:
error_reporting(E_ALL & ~E_NOTICE);
set_error_handler()
7. Fehlerprotokolle aufzeichnen
a. Setzen Sie display_errors in PHP.ini auf Off und log_errors auf On
set_error_handler('reportError'); $mess=""; function reportError($error_type,$error_message,$error_file,$error_line){ global $mess; $mess.="发生错误级别为{$error_type}类型,错位信息<b>{$error_message}</b>,在文件{$error_file}中,第{$error_line}行。<br>"; } getType($a); echo "1111111<br>"; getType(); echo "2222<br>"; echo $mess; /*发生错误级别为8类型,错位信息Undefined variable: a,在文件F:\projects\Frame\FrameTest\BackEnd\regularExpression.php中,第24行。 发生错误级别为2类型,错位信息gettype() expects exactly 1 parameter, 0 given,在文件F:\projects\Frame\FrameTest\BackEnd\regularExpression.php中,第26行。*/. Passen Sie das Protokollverzeichnis an
c. Sie können es auch mit error_log="C:/XX/XX/php_error.log"
oder ini_get innerhalb des Skripts festlegen
ini_set("display_errors","Off")
2 .Exception ist eine vom System vordefinierte Klasse
3. Wenn ein Ausnahmeobjekt ausgelöst wird, geben Sie das Ausnahmeobjekt an die Klasse in Catch weitertry{ echo "开车上班<br>"; throw new Exception("车子爆胎了!"); }catch(Exception $e){//相当于Exception $e = new Exception(''); echo $e->getMessage().'<br>'; echo '换上备胎,继续上班<br>'; }6. Angepasste Ausnahmeklasse a. Die Ausnahmeklasse ist die Basisklasse für alle Ausnahmen und definiert keine spezifischen Ausnahmebehandlungsmethoden (nur einige Methoden zum Erhalten von Eingabeaufforderungen)
set_error_handler('reportError'); function reportError($error_type,$error_message,$error_file,$error_line){ if($error_type==E_WARNING){ throw new Exception("错误信息:{$error_message},错误文件:{$error_file},错误行数{$error_line}"); } } function drive($a){ echo $a; } try{ echo "开车上班<br>"; drive();//忘记传参,触发自定义错误函数中警告性错误,抛出异常 }catch(Exception $e){//相当于Exception $e = new Exception(''); echo $e->getMessage().'<br>'; echo "换上备胎,继续上班<br>"; }c Vergessen Sie nicht, den Konstruktor der übergeordneten Klasse zur Initialisierung aufzurufen
7. Hinweis: Try kann auch verschachtelt werden versuchen
class BTException extends Exception { function __construct($message){ parent::__construct($message); } function method(){ return "打开后备箱,拿出工具,换备胎"; } } try{ echo "开车上班<br>"; throw new BTException("车子爆胎了!"); }catch(BTException $e){//相当于Exception $e = new Exception(''); echo $e->getMessage().'<br>'; echo $e->method().'<br>'; echo "换上备胎,继续上班<br>"; }Zusammenfassung
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Fehler- und Ausnahmebehandlung in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!