Heim  >  Artikel  >  Backend-Entwicklung  >  Wie man Fehler und Ausnahmen in PHP behandelt

Wie man Fehler und Ausnahmen in PHP behandelt

青灯夜游
青灯夜游Original
2021-09-06 10:55:383698Durchsuche

In PHP können Sie verschiedene integrierte Mitgliedsfunktionen in der Ausnahmebehandlungsklasse „Exception“ verwenden, um Ausnahmedaten abzurufen und zurückzugeben. Beispielsweise kann die Funktion „getMessage()“ den Inhalt der Ausnahmemeldung zurückgeben. Versuchen Sie die Anweisung „catch“ und das Schlüsselwort „throw“, um Ausnahmen im Programm abzufangen.

Wie man Fehler und Ausnahmen in PHP behandelt

Die Betriebsumgebung dieses Tutorials: Windows 7-System, PHP-Version 7.1, DELL G3-Computer

Ausnahmebehandlungsklasse in PHP

PHP bietet in dieser Klasse eine integrierte Ausnahmebehandlungsklasse – Exception Häufig verwendete Mitgliedsfunktionen sind wie folgt:

  • getMessage(): gibt den Nachrichteninhalt der Ausnahme zurück;

  • getCode(): gibt den Ausnahmecode in numerischer Form zurück;

  • getFile(): gibt den zurück Datei, in der die Ausnahme aufgetreten ist. Name;

  • getLine(): Gibt die Codezeilennummer zurück, in der der Fehler aufgetreten ist Funktion, die in eine Zeichenfolge formatiert wurde. Von der Funktion getTrace() generierte Informationen: generiert Ausnahmezeichenfolgeninformationen, die überladen werden können. Beachten Sie, dass der Funktion zwei Unterstriche vorangestellt sind.

  • Der folgende Code ist der vollständige Code der Exception-Klasse. Aus der Definition dieser Klasse können wir ersehen, auf welche Eigenschaften und Methoden (Mitgliedsfunktionen) in vom Benutzer abgeleiteten Unterklassen zugegriffen und diese geerbt werden können.

    Exception {
        /* 属性 */
        protected string $message ;
        protected int $code ;
        protected string $file ;
        protected int $line ;
        /* 方法 */
        public __construct ([ string $message = "" [, int $code = 0 [, Throwable $previous = NULL ]]] )
        final public getMessage ( void ) : string
        final public getPrevious ( void ) : Throwable
        final public getCode ( void ) : int
        final public getFile ( void ) : string
        final public getLine ( void ) : int
        final public getTrace ( void ) : array
        final public getTraceAsString ( void ) : string
        public __toString ( void ) : string
        final private __clone ( void ) : void
    }
  • Ausnahmen im Programm abfangen

  • Wenn Sie in PHP Ausnahmen im Programm abfangen möchten, müssen Sie dazu die try-catch-Anweisung und das Schlüsselwort throw verwenden. Die Try-Catch-Anweisung ähnelt der Flusskontrollanweisung, sodass Sie mit der Try-Catch-Anweisung eine alternative bedingte Auswahlstruktur implementieren können und das Schlüsselwort throw eine Ausnahme auslösen kann. Das Syntaxformat der Try-Catch-Anweisung lautet wie folgt:
  • try{
        // 可能出现异常或错误的代码,比如文件操作、数据库操作等
    }catch(Exception $e){    // $e 为一个异常类的对象
        // 输出错误信息
    }

    Code, der eine Ausnahmebehandlung erfordert, muss im Try-Codeblock platziert werden, um mögliche Ausnahmen abzufangen. Jeder Versuch muss mindestens einen entsprechenden Fang haben. Verwenden Sie mehrere Catches, um von verschiedenen Klassen generierte Ausnahmen abzufangen.

  • Wenn der Try-Codeblock keine Ausnahme mehr auslöst oder kein Catch gefunden werden kann, der mit der ausgelösten Ausnahme übereinstimmt, setzt der PHP-Code die Ausführung fort, nachdem er zum letzten Catch gesprungen ist.

Im PHP-Code generierte Ausnahmen können durch Throw-Anweisungen ausgelöst und durch Catch-Anweisungen abgefangen werden. Natürlich erlaubt PHP, innerhalb von Catch-Blöcken erneut Ausnahmen auszulösen.

Wenn eine Ausnahme ausgelöst wird, wird der nachfolgende Code nicht weiter ausgeführt und PHP versucht weiterhin, den ersten passenden Catch zu finden. Wenn eine Ausnahme nicht abgefangen und nicht entsprechend mit set_Exception_handler() behandelt wird, wird ein schwerwiegender Fehler generiert und die Meldung UncaughtException... ausgegeben. 【Beispiel】Verwenden Sie Try Catch und Throw, um Ausnahmen im Programm abzufangen.

<?php
    try{
        $err = &#39;抛出异常信息,并跳出 try 语句块&#39;;
        if(is_dir(&#39;./test&#39;)){
            echo &#39;这里是一些可能会发生异常的代码&#39;;
        }else{
            throw new Exception($err, 12345);   // 抛出异常
        }
        echo &#39;上面抛出异常的话,这行代码将不会执行,转而执行 catch 中的代码。<br>&#39;;
    }catch(Exception $e){
        echo &#39;捕获异常:&#39;.$e->getMessage().&#39;<br>错误代码:&#39;.$e->getCode().&#39;<br>&#39;;
    }
    echo &#39;继续执行 try catch 语句之外的代码&#39;;
?>

Die laufenden Ergebnisse lauten wie folgt:

捕获异常:抛出异常信息,并跳出 try 语句块
错误代码:12345
继续执行 try catch 语句之外的代码

Versuchen Sie im Beispielcode im try-Anweisungsblock festzustellen, ob im aktuellen Verzeichnis ein Verzeichnis mit dem Namen test vorhanden ist. Wenn dieses Verzeichnis nicht vorhanden ist, wird der Code aktiviert Zeile 7 wird ausgeführt. Das Schlüsselwort throw löst eine Ausnahme aus. Diese Ausnahme ist ein Objekt der Exception-Klasse, das über das Schlüsselwort new generiert wird. Das Objekt wird mit der Fehlermeldung $err und dem Fehlercode 12345 initialisiert, sodass diese Informationen abgerufen werden können, wenn die Ausnahme später abgefangen wird (Zeile 11 des Code).

Sobald eine Ausnahme ausgelöst wird, wird der verbleibende Code im Try-Anweisungsblock nicht mehr ausgeführt. Der Programmablauf wird zur Ausführung an den entsprechenden Catch-Anweisungsblock übertragen und schließlich werden die Fehlerinformationen und der Code durch Aufrufen ausgegeben seine Mitgliedsfunktion über das Exception-Objekt.

Empfohlenes Lernen: „

PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWie man Fehler und Ausnahmen in PHP behandelt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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