Springで例外処理の方法について勉強したのでメモ。
Springで例外処理する方法は大きく5つあるらしい。
(現実的なのは3〜5の3つ。)
Springでの例外処理の方法5つ
1.他の言語同様メソッド1つ1つ必要な箇所にtry〜catchを描く方法
2.そもそも例外処理を書かず、エラーページだけを用意しておく方法
3.@AfterThrowingを使う方法
4.コントローラクラス毎に共通の実装する方法
5.Webアプリ全体で共通の実装をする方法
1.他の言語同様メソッド1つ1つ必要な箇所にtry〜catchを描く方法
1つ1つに対して、例外処理を書くというのが1つめ。
はっきり言ってオススメできない。
Springフレームワークを採用していてこの方法をとることはまずないと思われる。
漏れも心配だし、同じような処理をいろいろなところに書くと修正も大変。
あと、コードの可読性も落ちる。
2.そもそも例外処理を書かず、エラーページだけを用意しておく方法
Springでは、ロジックを書かなくても、エラーが起きた時に自動でエラーページに飛ばしてくれる機能がある。
そのため、src/main/resources/templates/error.htmlファイルを用意しておくことで、エラーが起こった時に自動で、
error.htmlに飛ばしてくれる。
また、HTTPエラー毎に表示内容を変えることもできる。
その場合は、src/main/resources/templates/errorというようにerrorフォルダを作成しておき、
404エラーなら404.html。500エラーなら500.htmlなどエラー毎のページを用意しておく。
ユーザー的にはこれだけでいいが、システム運用的にはエラーログなどの出力がこれだけだとできないのでつらい。
3.@AfterThrowingを使う方法
aspectフォルダ内に、アスペクト用のクラスを作成する。
そして、メソッドに@AfterThrowingアノテーションをつける。
こうすることにより、例外が起こった後に、このメソッドが呼び出されるため、メソッド内でエラーログの出力などができる。
対象となるクラスは@AfterThrowingアノテーションで設定できる。