【Spring MVC】RestTemplateを使用した際に発生する基本的な例外

概要

RestTemplateを使用した際に発生する基本的な例外についてまとめた。

 

基本的な例外

RestTemplateを使用してAPI疎通を行ってエラーになった際に、基本的に以下の例外がスローされる。

 

RestTemplateがスローする例外


java.lang.Throwable
 └── java.lang.Exception
      └── java.lang.RuntimeException
           └── org.springframework.core.NestedRuntimeException
                └── org.springframework.web.client.RestClientException(RestTemplate例外の親クラス)
                     ├── HttpStatusCodeException
                     │    ├── HttpClientErrorException
                     │    ├── HttpServerErrorException
                     │    ├── UnknownHttpStatusCodeException
                     ├── ResourceAccessException
                     ├── UnknownContentTypeException

 

RestClientException

RestTemplateがスローする、すべての例外の親クラス。
基本的にはこの例外をキャッチすれば、RestTemplateがスローするあらゆる例外をハンドリングできる。

 

HttpStatusCodeException

RestTemplateがスローする、HTTPステータスコードを伴う例外の親クラス。
APIからのHTTPレスポンスがエラー(4xx系・5xx系)、または未知のステータスコードだった場合にハンドリングできる。

 

HttpClientErrorException

RestTemplateがスローする、4xx系(クライアントエラー)の例外クラス。
404(Not Found)や400(Bad Request)など、クライアント側のリクエストエラーをハンドリングできる。

 

HttpServerErrorException

RestTemplateがスローする、5xx系(サーバーエラー)の例外クラス。
500(Internal Server Error)や503(Service Unavailable)など、サーバー側の障害をハンドリングできる。

 

UnknownHttpStatusCodeException

RestTemplateが認識できない、未知のHTTPステータスコードでスローされる例外クラス。
独自のステータスコードや標準外のレスポンスを適切に処理するために使用される。

 

ResourceAccessException

RestTemplateのネットワーク接続エラーやタイムアウトでスローされる例外クラス。
サーバーへの到達不可や遅延など、通信障害に関連する問題をハンドリングできる。

 

UnknownContentTypeException

RestTemplateが認識できないContent-Typeのレスポンスを受け取った際にスローされる例外クラス。
想定外のデータ形式を適切に処理するために使用される。

 

 

まとめ

 

☑ RestClientExceptionはRestTemplateで発生するすべての例外の親クラス

☑ HTTPエラー(HttpStatusCodeException)は4xx(HttpClientErrorException)または5xx(HttpServerErrorException)で例外クラスが別れる

☑ 例外ごとに適切な処理を行う必要がある

 

スポンサーリンク