はじめに
Spring初心者です。
1.5ヶ月ほどで、Webアプリケーションを作りました。
例外処理について調べたので、まとめます。
HandlerExceptionResolver
これを使って例外処理をする。
以下の順番で処理されていく
① @ExceptionHandlerを付与したメソッド
② @ResponseStatusを付与したメソッド
③ Springで定義されている例外を処理するHandlerExceptionResolver
④ HandlerExceptionResolverを実装したクラス
個人制作の範疇ならば、①と②を使えば十分だった。
実際の使用例
① @ExceptionHandler
@ExceptionHandler(Exception.class)
public String Handler(){catchしたExceptionの処理内容}
② @ResponseStatus (クラスに@つけても大丈夫かも)
@ResponseStatus(value = HttpStatus.NOT_FOUND)
public String Status(){例外処理}
例外を投げる
アプリケーション制作にあたり、以下のような役割にわけた。
@Controller@Service@Repository
理想としては、@Serviceでエラーを投げたかったが、できなかった。
おそらく@Controllerクラスで、各Serviceクラスを@Autowiredしてたから、
Controller側で処理するしかなかったと思っている。
もしかしたらServiceで処理できたのかもしれないな。。。
まとめ
慣れたら意外と、例外処理はできた。
@ControllerのスーパークラスにExceptionControllerなどを作って、
そこに各Exceptionの処理をまとめて記述した。
Controller単位でハンドリングしたい場合は、
都度Overrideすれば、余分な記述はなくなるかと。
ソースはGitHubに載っています。