ホーム > Laravel > 【Laravel】Handler::report(Exception $exception) must be compatible with report(Throwable $e) in Handler.php on line 37の解決方法
Laravel

【Laravel】Handler::report(Exception $exception) must be compatible with report(Throwable $e) in Handler.php on line 37の解決方法

いつもご利用ありがとうございます。
この記事には広告が掲載されており、その広告費によって運営しています。

エラー全文

PHP Fatal error: Declaration of App\Exceptions\Handler::report(Exception $exception) must be compatible with Illuminate\Foundation\Exceptions\Handler::report(Throwable $e) in /var/www/html/app/Exceptions/Handler.php on line 37

というエラーの解決方法についてまとめました

解決方法

Laravel6 までは、エラーの処理はExceptionクラスを使用していましたが、Laravel 7 以降はThrowableクラスを使うようになりました。

よって、これまで

report(Exception $exception)

と書いていたものを、

report(Throwable $e)

に変更すると解決します。

Laravel 7 以降では Throwable を使うように変更されました。

これは PHP 7 から Throwable が Exception の親クラスとして導入されたためです。

Throwable を使うことで、Exception だけでなく Error も適切にキャッチできるようになり、エラーハンドリングの柔軟性が向上しました。

今回の例だと、

app/Exceptions/Handler.php

use Throwable; // Throwable を明示的に use する

// 旧バージョンのコード(Laravel 6)
public function report(Exception $exception)
{
    parent::report($exception);
}

// 修正後(Laravel 7 以降)
public function report(Throwable $exception)
{
    parent::report($exception);
}

// render メソッドも修正
public function render($request, Throwable $exception)
{
    return parent::render($request, $exception);
}

このように変更する必要がありました。

誰かの参考になれば幸いです。

フィードバックのお願い
この記事のフィードバックがありましたらYoutubeの適当な動画にコメントしていただいたり、お問い合わせからご連絡ください。