Spring5 – エラーハンドリング

今回は、Spring5で追加されたエラーハンドリングについて調べてみようと思います。

「Resolver」「ControllerAdvice」アノテーションを使ったエラーハンドリングがありますが今回は、「ResponseStatusException」について調べてみます。

ResponseStatusException

  • Spring5に追加されたExceptionクラスです。
  • 独自にExecptionクラスを作成せずにエラー処理を行うことができます。
  • Exception作成時にHttpStatusを指定することで、どのHttpステータスを送信するかを決定します。
@GetMapping(value = "/{id}")
public Foo findById(@PathVariable("id") Long id, HttpServletResponse response) {
    try {
        Foo resourceById = RestPreconditions.checkFound(service.findOne(id));

        eventPublisher.publishEvent(new SingleResourceRetrievedEvent(this, response));
        return resourceById;
     }
    catch (MyResourceNotFoundException exc) {
         throw new ResponseStatusException(
           HttpStatus.NOT_FOUND, "Foo Not Found", exc);
    }
}

メリット

  • プロトタイピングに最適:基本的なソリューションを非常に迅速に実装できます。
  • 1つのタイプ、複数のステータスコード:1つの例外タイプは、複数の異なる応答につながる可能性があります。これにより、@ ExceptionHandlerと比較して密結合が減少します。
  • 多くのカスタム例外クラスを作成する必要はありません。 例外はプログラムで作成できるため、例外処理をより細かく制御できます。

参考

https://www.baeldung.com/spring-response-status-exception

https://b1tblog.com/2020/03/18/spring-rest-3/

コメントを残す