Heim > Backend-Entwicklung > PHP-Tutorial > PHP einfache Ausnahmebehandlung und verschachtelte Ausnahmen

PHP einfache Ausnahmebehandlung und verschachtelte Ausnahmen

伊谢尔伦
Freigeben: 2016-11-23 09:15:16
Original
2107 Leute haben es durchsucht

PHP 5 fügt ein Ausnahmebehandlungsmodul hinzu, das anderen Sprachen ähnelt. Im PHP-Code generierte Ausnahmen können durch Throw-Anweisungen ausgelöst und durch Catch-Anweisungen abgefangen werden. Code, der eine Ausnahmebehandlung erfordert, muss in einem 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 wird, der mit der ausgelösten Ausnahme übereinstimmt, setzt der PHP-Code die Ausführung fort, nachdem er zum letzten Catch gesprungen ist. Natürlich erlaubt PHP, innerhalb von Catch-Blöcken erneut Ausnahmen auszulösen.

Wenn eine Ausnahme ausgelöst wird, wird der nachfolgende Code (Anmerkung des Übersetzers: bezieht sich auf den Codeblock, wenn die Ausnahme ausgelöst wird) nicht weiter ausgeführt und PHP versucht, den ersten Code zu finden, der mit der Übereinstimmung übereinstimmen kann fangen. Wenn eine Ausnahme nicht abgefangen wird und keine Notwendigkeit besteht, set_Exception_handler() für die entsprechende Verarbeitung zu verwenden, generiert PHP einen schwerwiegenden Fehler und gibt eine Eingabeaufforderungsmeldung „Uncaught Exception...“ (nicht abgefangene Ausnahme) aus.

Beachten Sie, dass interne HP-Funktionen hauptsächlich Fehlerberichte verwenden, nur moderne objektorientierte Erweiterungen verwenden Ausnahmen. Aber Fehler können durch ErrorException leicht in Ausnahmen umgewandelt werden.

Die PHP Standard Library (SPL) bietet viele integrierte Ausnahmeklassen.

Beispiel #1 löst eine Ausnahme aus

<?php
    function inverse($x) {
        if (!$x) {
            throw new Exception(&#39;Division by zero.&#39;);
        }
        else return 1/$x;
    }
    try {
        echo inverse(5) . "\n";
        echo inverse(0) . "\n";
    } catch (Exception $e) {
        echo &#39;Caught exception: &#39;, $e->getMessage(), "\n";
    }
    // Continue execution
    echo &#39;Hello World&#39;;
?>
Nach dem Login kopieren

Die obige Routine gibt Folgendes aus:

0,2
Abgefangene Ausnahme: Division durch Null.
Hallo Welt

Beispiel #2 Verschachtelte Ausnahme

<?php
    class 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();
?>
Nach dem Login kopieren

Die obige Routine gibt Folgendes aus:

string(4) "foo!"


Verwandte Etiketten:
Quelle:php.cn
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