[PHP][Laravel] Handler.phpで特定の例外エラー(Exception)を処理対象外としたい
バージョン
Laravel 5.7
概要
発生した例外エラー(Exception)をHandler.phpのreportメソッドでbugsnagやslackなどに通知する処理があった場合
大量に発生するような例外を処理の対象外とする。
例としてAuthenticationExceptionを除外する。
コード
■App\Exceptions\Handler.php
// 除外したい例外クラスを追加する protected $dontReport = [ \Illuminate\Auth\AuthenticationException::class, ]; public function report(Exception $exception) { // shouldReport()はdontReportに含まれていないexceptionであればtrueとなる if ($this->shouldReport($exception)) { Bugsnag::notifyException($exception); } parent::report($exception); }
単純に$dontReport
に追加するだけではHandler.phpのreportメソッドでは効果がないので注意。
(parent::reportメソッド側では効果があり、$logger->error
の対象外となる)
ちなみに$dontReport
にある例外時は何もさせたくない場合は以下のようにする。
public function report(Exception $exception) { if ($this->shouldntReport($e)) { return; } Bugsnag::notifyException($exception); parent::report($exception); }
shoudReportとshouldntReportがあるので都合が良い方を。
- 作者: 掌田津耶乃
- 出版社/メーカー: 秀和システム
- 発売日: 2018/04/23
- メディア: Kindle版
- この商品を含むブログを見る