はじめに
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に載っています。