Heim > Backend-Entwicklung > PHP-Tutorial > Detaillierte Erklärung der Fehlerbehandlung in PHP

Detaillierte Erklärung der Fehlerbehandlung in PHP

WJ
Freigeben: 2023-04-08 20:50:02
nach vorne
3631 Leute haben es durchsucht

Detaillierte Erklärung der Fehlerbehandlung in PHP

Detaillierte Erläuterung der PHP-Fehlerbehandlung

Fehlerbericht

Die allgemeine Zuordnung von Fehlern in PHP-Programme In den folgenden drei Bereichen:

1. Grammatikfehler

Grammatikfehler sind am häufigsten und am einfachsten zu beheben. Beispiel: Im Code fehlt ein Semikolon. Diese Art von Fehler verhindert die Ausführung des Skripts

2. Laufzeitfehler

Diese Art von Fehler verhindert im Allgemeinen nicht die Ausführung des PHP-Skripts, aber verhindert, was gerade getan wird . Gibt einen Fehler aus, aber das PHP-Skript wird weiterhin ausgeführt

3. Logikfehler

Diese Art von Fehler ist die problematischste. Sie verhindert weder die Ausführung des Skripts noch gibt sie eine Fehlermeldung aus

[注意]若将php.ini配置文件中的display_errors从默认的on设置为off,将不显示任何错误

  在PHP脚本中可调用ini_set()函数,动态设置php.ini配置文件

  ini_set("display_errors","On"); //显示所有错误信息

>Detaillierte Erklärung der Fehlerbehandlung in PHP

Tatsächlich lassen sich die 13 Fehlertypen in der Tabelle in 3 Kategorien einteilen: Aufmerksamkeitsstufe, Warnstufe und Fehlerstufe. Ignorieren Sie während des Entwicklungsprozesses im Allgemeinen Fehler auf Aufmerksamkeitsebene

Detaillierte Erklärung der Fehlerbehandlung in PHPFehlerbehandlung

1. Die erste Fehlerbehandlungsmethode besteht darin, die Konfigurationsdatei zu ändern

Detaillierte Erklärung der Fehlerbehandlung in PHP

Die Standardfehlerstufe besteht darin, alle Fehlerstufen anzuzeigen:

Ändern Sie in , um keine Aufmerksamkeitsstufenfehler anzuzeigen. Starten Sie dann den Dienst neu, damit er wirksam wird.

error_reporting = E_ALL Alle unbemerkten Fehler auslösen, der Standardwert.

Berücksichtigen Sie nur schwerwiegende Laufzeitfehler, neue Parsing-Fehler und Kernfehler.

Melden Sie Fehler mit Ausnahme von vom Benutzer verursachten Fehlern Alle Fehler außer error_reporting = E_ALLerror_reporting = E_ALL & ~E_NOTICE

error_reporting = E_ALL & ~E_NOTICEerror_reporting = E_ERROR | E_PARSE | E_CORE_ERROR  error_reporting = E_ALL & ~(E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE) 2. Die zweite Fehlerbehandlungsmethode besteht darin, die Fehlerbehandlungsfunktion

in PHP zu verwenden Das Skript kann die Fehlerberichtsebene dynamisch über die Funktion error_reporting() festlegen Detaillierte Erklärung der Fehlerbehandlung in PHP

<?php
 getType($a);//未定义变量,注意级别
 echo "1111111111111111<br>";    getType();//未传入参数,警告级别
 echo "222222222222222222222<br>";
 getType3();//函数名错误,错误级别
 echo "333333333333333333333<br>";
 ?>
Nach dem Login kopieren

Benutzerdefinierte Fehlerbehandlung

Das Anpassen der Verarbeitung von Fehlerberichten kann vollständig umgangen werden. Standard PHP-Fehlerbehandlungsfunktion, damit Sie einen Fehlerbericht in einem von Ihnen definierten Format drucken oder den Ort ändern können, an dem der Fehlerbericht gedruckt wird. In den folgenden Situationen kann eine benutzerdefinierte Fehlerbehandlung in Betracht gezogen werden: 1. Notieren Sie die Fehlerinformationen und entdecken Sie sie einige Produktionsprobleme in der Umgebung; 3. Fehlerausgabe steuern

Verwenden Sie die Funktion set_error_handler(), um die benutzerdefinierte Fehlerbehandlung festzulegen;

<?php
    error_reporting(E_ALL & ~E_NOTICE);
    getType($a);//注意级别
    echo "1111111111111111<br>";
    getType();//警告级别
    echo "222222222222222222222<br>";
    getType3();//错误级别
    echo "333333333333333333333<br>";?>
Nach dem Login kopieren
Detaillierte Erklärung der Fehlerbehandlung in PHP

Fehlerprotokoll

Im Allgemeinen speichern Programme Fehlerprotokolle, um Fehlerinformationen aufzuzeichnen, wenn das Programm ausgeführt wird. Und das Fehlerprotokoll hat seinen Standardspeicherort. Wir können den Speicherort von Fehlermeldungen und Fehlerprotokollen ändern

In der PHP.ini-Konfigurationsdatei gibt es die folgenden Elemente zum Festlegen des Fehlerprotokolls

//Wird jeden Fehler senden zu PHP

//Fehlerbericht nicht anzeigen

//Maximale Länge jedes Protokolleintrags

//Geben Sie die Datei an, in die Fehler geschrieben werden

Im In der PHP-Datei können wir die Funktion „error_log()“ verwenden, um die Fehlermeldung anzupassen Das Ändern des normalen Ablaufs eines Skripts bei Auftreten eines Fehlers ist eine wichtige neue Funktion in PHP5. Die Ausnahmebehandlung ist ein skalierbarer und einfach zu wartender Fehlerbehandlungsmechanismus und bietet eine neue objektorientierte Fehlerbehandlungsmethodeerror_reporting = E_ALL

try{
使用try去包含可能会发生异常的代码
一旦出现异常try进行捕获异常,交给catch处理。
抛出异常语句:throw 异常对象。
}catch(异常对象参数){
在这里做异常处理。
}[catch(。,,){
.. .. ..
}]

<?php
    try {        $error = &#39;Always throw this error&#39;;        throw new Exception($error);   
        //创建一个异常对象,通过throw语句抛出
        echo &#39;Never executed&#39;;         
        //从这里开始,try代码块内的代码将不会再被执行
    } catch (Exception $e) {        echo ‘Caught exception: ’.$e->getMessage()."
"; //输出捕获的异常消息
    }    echo &#39;Hello World&#39;; //程序没有崩溃继续向下执行?>
Nach dem Login kopieren

自定义异常

  用户可以用自定义的异常处理类来扩展PHP内置的异常处理类。以下的代码说明了在内置的异常处理类中,哪些属性和方法在子类中是可访问和可继承的

<?phpclass Exception{
    protected $message = &#39;Unknown exception&#39;;   // 异常信息
    private   $string;                          // __toString cache
    protected $code = 0;                        // 用户自定义异常代码
    protected $file;                            // 发生异常的文件名
    protected $line;                            // 发生异常的代码行号
    private   $trace;                           // backtrace
    private   $previous;                        // previous exception if nested exception
    public function __construct($message = null, $code = 0, Exception $previous = null);
    final private function __clone();           // Inhibits cloning of exceptions.
    final public  function getMessage();        // 返回异常信息
    final public  function getCode();           // 返回异常代码
    final public  function getFile();           // 返回发生异常的文件名
    final public  function getLine();           // 返回发生异常的代码行号
    final public  function getTrace();          // backtrace() 数组
    final public  function getPrevious();       // 之前的 exception
    final public  function getTraceAsString();  // 已格成化成字符串的 getTrace() 信息
    // Overrideable
    public function __toString();               // 可输出的字符串}?>
Nach dem Login kopieren

  [注意]如果使用自定义的类来扩展内置异常处理类,并且要重新定义构造函数的话,建议同时调用parent::__construct()来检查所有的变量是否已被赋值。当对象要输出字符串的时候,可以重载__toString() 并自定义输出的样式

<?php
    /* 自定义的一个异常处理类,但必须是扩展内异常处理类的子类 */
    class MyException extends Exception{
        //重定义构造器使第一个参数 message 变为必须被指定的属性
        public function __construct($message, $code=0){
            //可以在这里定义一些自己的代码
         //建议同时调用 parent::construct()来检查所有的变量是否已被赋值
            parent::__construct($message, $code);
        }    
        public function __toString() {        
          //重写父类方法,自定义字符串输出的样式
          return __CLASS__.":[".$this->code."]:".$this->message."<br>";
        }        public function customFunction() {    
             //为这个异常自定义一个处理方法
             echo "按自定义的方法处理出现的这个类型的异常<br>";
        }
    }?>
Nach dem Login kopieren
<?php
   try { //使用自定义的异常类捕获一个异常,并处理异常
        $error = &#39;允许抛出这个错误&#39;;       
        throw new MyException($error);    
             //创建一个自定义的异常类对象,通过throw语句抛出
        echo &#39;Never executed&#39;; 
            //从这里开始,try代码块内的代码将不会再被执行
    } catch (MyException $e) {        //捕获自定义的异常对象
        echo &#39;捕获异常: &#39;.$e;        //输出捕获的异常消息
        $e->customFunction();  //通过自定义的异常对象中的方法处理异常
    }    echo &#39;你好呀&#39;;              //程序没有崩溃继续向下执行?>
Nach dem Login kopieren

相关参考:php教程

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung der Fehlerbehandlung in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:51dev.com
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