PHP 7例外処理の大規模な改善
PHP 7は、例外処理に大幅に改善され、Throwable
インターフェイスとError
クラスの導入により、エラー処理機能が大幅に向上します。 Throwable
インターフェイスは、Exception
およびError
クラスのベースインターフェイスであり、例外であろうとエラーであろうと、開発者がすべてのスロー可能なエラーをキャッチできるようにします。 Error
クラスは、致命的なエラーやタイプエラーを含むさまざまな内部PHPエラーを処理し、4つのサブクラス、ArithmeticError
、TypeError
、ParseError
、AssertionError
、および
Throwable
インターフェイス
Throwable
Exception
インターフェイスは、Error
および
<?php try { throw new Exception("这是一个异常"); } catch (Throwable $e) { echo $e->getMessage(); }
ParseError
またはnew
<?php try { $result = eval("2*'7'"); } catch (Throwable $e) { echo $e->getMessage(); }
このコードを実行して、ParseError
でセミコロンが欠落しているため、eval()
を取得します。
カスタムクラスは直接実装できません< Throwable
Throwable
Exception
Error
クラスは、PHP内部エラー(致命的なエラーまたはタイプエラー)を処理します。 4つのサブクラスがあります:
Error
ArithmeticError
:間違ったタイプの値を変数に割り当てるなど、タイプエラー。 TypeError
:構文エラーなどの解析エラー。 ParseError
:アサーションエラー、AssertionError
assert()
PHP 7にアップグレードする前に、カスタム Error
ArithmeticError
このエラーは、数学操作を実行するときに発生します。たとえば、:
intdiv()
は、-1
<?php try { var_dump(intdiv(PHP_INT_MIN, -1)); } catch (ArithmeticError $e) { echo $e->getMessage(); }
DivisionByZeroError
のサブクラスであり、ゼロで割ったときにスローされます。 ArithmeticError
TypeError
ParseError
を使用する場合、または構文エラーを含む外部PHPファイルを使用するとスローされます。 eval()
AssertionError
このエラーは、assert()
関数のアサーションが失敗した場合にのみスローされます。このエラーをキャッチするには、php.ini
およびassert.exception
手順をzend.assertions
で構成する必要があります。
概要
PHP 7で導入されたインターフェイスとThrowable
クラスは、例外処理を簡素化し、さまざまなエラータイプを簡単に処理します。 PHP 7にアップグレードするときは、カスタムクラスの問題の名前を付けることに注意し、新しいエラーと拡張クラスに精通してください。 Error
Error
クラスを導入し、すべてのエラーは例外として扱い、ブロックで捉えることができます。
Throwable
Error
try/catch
は、すべての例外のベースインターフェイスであり、およびThrowable
によって実装されています。
Throwable
Exception
Error
クラスは、内部PHPエラーを処理するために使用されます。
Error
Error
、、オブジェクトをキャプチャします。 try/catch
Throwable
Exception
Error
>>>>。 Exception
Error
Exception
Error
PHP 7で例外をスローする方法は?
throw
PHP 7でカスタム例外を作成する方法は?
Exception
finally
finally
PHP 7で例外を再投与する方法は?
catch
throw
PHP 7で複数の例外を処理する方法は?
以上がPHP 7での例外処理への変更のクラッシュコースの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。