## 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
      - DivisionByZeroError
    - AssertionError
    - ParseError
    - TypeError
      - ArgumentCountError
  - Exception
    - ...