Laravel 学習記録 #015 例外処理を学ぶ
Laravelの例外処理について学習したものをまとめてます。
laravelのマニュアルを読んだので、そのまとめです。実践編はまた別に書きます。
例外処理とは
プログラムの途中で発生し、処理を継続したくない時に行う処理
Laravelではフレームワークが全ての例外をキャッチしてくれる
標準の例外ハンドラはApp\Exceptions\Handlerクラス
カスタム例外を作成することもできる
例外ハンドラ
Laravelの例外処理は、最初から用意されていて
App\Exceptions\Handlerクラスが、エラーや例外が発生した場合、それをキャッチし、適切に処理してくれている。
例外レポート
例外発生時に何する?を決めるやつで、標準ではログ出力。
フォーマットを変更したり、Logテーブルにも出力したりする場合は
reportableメソッドを使用して、処理を追加する。
グローバルコンテキスト
Handlerクラスのcontextメソッドで、独自のグローバルコンテキストデータを定義。
ここに設定すると、すべての例外のログメッセージに特定の情報を含まれるようになる。
reportヘルパ
例外の報告はしつつ、処理を継続するにはreportヘルパ関数を使う。
例外のログレベル
例外の種類と関連するログレベルを
Handlerクラスの $levels プロパティで設定できる。
タイプによる例外の無視
無視したい例外がある場合、
Handlerクラスの $dontReport プロパティにその例外クラスを追加することで、その例外は報告されなくなる。
例外のレンダ
Handlerクラスの renderable メソッドで例外が発生した際に表示されるエラーページをカスタマイズできる。
Reportable/Renderable例外
カスタム例外に直接 report メソッドと render メソッドを定義することができて、この場合register メソッドの代わりになる。
これらのメソッドが存在する場合、Laravelフレームワークによって自動的に呼び出される。
例外のレンダリング制御
render メソッドから false を返すことで、例外のデフォルトHTTPレスポンスをレンダする。
HTTP例外
サーバからのHTTPエラーコードをアプリケーションのどこからでもこのようなレスポンスを生成したい場合は、abortヘルパを使用する。
カスタムHTTPエラーページ
resources/views/errors/XXX.blade.phpビューテンプレートを作成
することで、エラーページが作れる。
HTTPエラーページのフォールバック
resources/views/errorsディレクトリに、4xx.blade.phpテンプレートと5xx.blade.phpテンプレートを定義すると、
特定のHTTPステータスコードに対応するページが存在しない場合に表示される。
例外処理結構大事なので、しっかり覚えとこうと思いました。
ログテーブルへの登録とか含めて楽にしたい。
この記事が気に入ったらサポートをしてみませんか?