PHP 7 でのエラー
PHP 7 は大半のエラーがどのようにPHPから報告されるかを変更しています。
PHP 5 で使われていたこれまでのエラー報告メカニズムを使うかわりに、
大半のエラーを Error 例外としてスローするようになったのです。
通常の例外と同様、Error 例外も、
最初にマッチした
catch
ブロックで現れます。
マッチするブロックがなければ、set_exception_handler
で設定したデフォルトの例外ハンドラが呼ばれます。
デフォルトの例外ハンドラもない場合は、例外が fatal error に変換されて、
これまでのバージョンのエラーと同じように扱われます。
Error クラスは
Exception を継承していないので、
キャッチし損ねた例外を
catch (Exception $e) { ... }
ブロックで受け止めているような PHP 5 のコードでは、
Error をキャッチできません。
catch (Error $e) { ... }
ブロックを用意するか、あるいは
set_exception_handler でハンドラを設定する必要があります。
Error の階層
-
Throwable
-
Error
-
ArithmeticError
-
AssertionError
-
CompileError
-
TypeError
-
ValueError
-
UnhandledMatchError
-
FiberError
-
Exception