見出し画像

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ステータスコードに対応するページが存在しない場合に表示される。


例外処理結構大事なので、しっかり覚えとこうと思いました。
ログテーブルへの登録とか含めて楽にしたい。

この記事が気に入ったらサポートをしてみませんか?