Laravelでオリジナル例外クラスを利用する

例外クラスとビューを作成

例外クラスを次のコマンドで作成。

# php artisan make:exception 例外クラス名

例外時に表示するビューを作成。

# php artisan make:view exceptions/exception

resources/views/exceptions/exception.blade.php ファイルが作成される。

例外クラスについて

例外クラスのreportメソッドとrenderメソッド

  • reportメソッド
    例外をログに記録する。
  • renderメソッド
    レスポンスを生成する。

作成した例外クラス

作成した例外クラス(Exceptionクラス)を編集。

<?php

namespace App\Exceptions;

use Exception as BaseException;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use Illuminate\View\View;
use Throwable;

class Exception extends BaseException
{

    public function __construct(string $message = "", int $code = 0, ?Throwable $previous = null)
    {
        parent::__construct($message, $code, $previous);
    }

    public function report(): void
    {
        // 指定した内容とレベルでログ出力
        Log::error($this->getMessage());
    }

    public function render(Request $request): View
    {
        // 指定したビューを表示。
        return view('exceptions.exception');
    }
}

動作確認

コントローラ等で次のコードを実行させることで確認できる。

throw new Exception('test');

これで例外クラスのreportメソッドにてログが出力され、
例外クラスのrenderメソッドにて指定したビューを表示できる。

コメント

タイトルとURLをコピーしました