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('pision by zero.'); } return 1/$x; }try { echo inverse(5) . "\n"; } catch (Exception $e) { echo 'Caught exception: ', $e->getMessage(), "\n"; } finally { echo "First finally.\n"; }try { echo inverse(0) . "\n"; } catch (Exception $e) { echo 'Caught exception: ', $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('foo!'); } 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!