Heim  >  Artikel  >  Backend-Entwicklung  >  [php-Handbuch] Ausnahmebehandlung

[php-Handbuch] Ausnahmebehandlung

不言
不言Original
2018-04-19 09:35:272274Durchsuche

Der Inhalt dieses Artikels befasst sich mit der [PHP-Handbuch]-Ausnahmebehandlung, die einen gewissen Referenzwert hat. Jetzt kann ich sie mit allen teilen, die sie brauchen.

Ausnahmebehandlung

PHP 5

Ausnahmen werden im Try-Codeblock ausgelöst und Ausnahmen werden im Catch-Codeblock abgefangen

Jeder Versuch muss mindestens einen entsprechenden Catch- oder Finalblock haben.

Das ausgelöste Objekt muss eine Instanz der Exception-Klasse oder eine Unterklasse von Exception sein, andernfalls wird es einen schwerwiegenden PHP-Fehler verursachen.

    try {      throw new Exception('异常提示语');      //throw 123;  //Fatal error: Uncaught Error: Can only throw objects 
      //throw new stdClass(); //Fatal error: Uncaught Error: Cannot throw objects that do not implement Throwable
    } catch (Exception $e) {      echo  $e->getMessage();
    }

catch

Sie können mehrere Catch-Blöcke verwenden, um verschiedene Kategorien von Ausnahmen abzufangen.
Die normale Ausführung (wenn innerhalb des Try-Blocks keine Ausnahme ausgelöst wird) wird nach dem letzten in der Reihenfolge definierten Catch-Block fortgesetzt.
Ausnahmen können in Catch-Blöcken ausgelöst (oder erneut ausgelöst) werden.

Wenn eine Ausnahme ausgelöst wird, wird der der Anweisung folgende Code nicht ausgeführt und PHP versucht, den ersten passenden Catch-Block zu finden.
Wenn die Ausnahme nicht abgefangen wird, wird ein schwerwiegender PHP-Fehler mit der Meldung „Uncaught Exception…“ ausgegeben, es sei denn, mit set_Exception_handler() wird ein Handler definiert.


finally

In PHP 5.5 und höher kann der Finally-Block auch nach oder anstelle des Catch-Blocks angegeben werden.
Unabhängig davon, ob eine Ausnahme ausgelöst wird, wird der Code im „finally“-Block immer nach den „try“- und „catch“-Blöcken ausgeführt, bevor die normale Ausführung fortgesetzt wird.

Example #4 Exception handling with a finally block(用finally块处理异常)<?phpfunction inverse($x) {
    if (!$x) {        throw new Exception(&#39;pision by zero.&#39;);
    }    return 1/$x;
}try {    echo inverse(5) . "\n";
} catch (Exception $e) {    echo &#39;Caught exception: &#39;,  $e->getMessage(), "\n";
} finally {    echo "First finally.\n";
}try {    echo inverse(0) . "\n";
} catch (Exception $e) {    echo &#39;Caught exception: &#39;,  $e->getMessage(), "\n";
} finally {    echo "Second finally.\n";
}// Continue executionecho "Hello World\n";?>

Example #5 Nested Exception (嵌套异常)<?phpclass MyException extends Exception { }class Test {
    public function testing() {
        try {            try {                throw new MyException(&#39;foo!&#39;);
            } catch (MyException $e) {                // rethrow it
                throw $e;
            }
        } catch (Exception $e) {
            var_dump($e->getMessage());
        }
    }
}$foo = new Test;$foo->testing();?>

Note 
set_exception_handler()设置用户自定义的异常处理函数
Exception::getMessage 获取异常消息内容

Verwandte Empfehlungen:

[php-Klassen und -Objekte] Objektserialisierung

Das obige ist der detaillierte Inhalt von[php-Handbuch] Ausnahmebehandlung. 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