Package org.springframework.web.client

# Class DefaultResponseErrorHandler

java.lang.Object
org.springframework.web.client.DefaultResponseErrorHandler

All Implemented Interfaces:
  `ResponseErrorHandler`

Direct Known Subclasses:
  `ExtractingResponseErrorHandler`

public class DefaultResponseErrorHandler extends Object implements ResponseErrorHandler
Spring's default implementation of the `ResponseErrorHandler` interface.

This error handler checks for the status code on the `ClientHttpResponse`. Any code in the 4xx or 5xx series is considered to be an error. This behavior can be changed by overriding `hasError(HttpStatusCode)`. Unknown status codes will be ignored by `hasError(ClientHttpResponse)`.

See `handleError(URI, HttpMethod, ClientHttpResponse)` for more details on specific exception types.

Since:
  3.0
Author:
  Arjen Poutsma, Rossen Stoyanchev, Juergen Hoeller
See Also:
  - `RestTemplate.setErrorHandler(org.springframework.web.client.ResponseErrorHandler)`

## Constructor Summary

Constructors
Constructor
Description
`DefaultResponseErrorHandler()`

## Method Summary

Modifier and Type
Method
Description
`protected Charset`
`getCharset(ClientHttpResponse response)`
Determine the charset of the response (for inclusion in a status exception).
`protected byte[]`
`getResponseBody(ClientHttpResponse response)`
Read the body of the given response (for inclusion in a status exception).
`void`
`handleError(URI url, HttpMethod method, ClientHttpResponse response)`
Handle the error in the given response with the given resolved status code and extra information providing access to the request URL and HTTP method.
`void`
`handleError(ClientHttpResponse response)`
Handle the error in the given response.
`protected void`
`handleError(ClientHttpResponse response, HttpStatusCode statusCode, URI url, HttpMethod method)`
Handle the error based on the resolved status code.
`protected boolean`
`hasError(int statusCode)`
Deprecated.
in favor of `hasError(HttpStatusCode)`
`boolean`
`hasError(ClientHttpResponse response)`
Delegates to `hasError(HttpStatusCode)` with the response status code.
`protected boolean`
`hasError(HttpStatusCode statusCode)`
Template method called from `hasError(ClientHttpResponse)`.
`protected Function<org.springframework.core.ResolvableType,?>`
`initBodyConvertFunction(ClientHttpResponse response, byte[] body)`
Return a function for decoding the error content.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### DefaultResponseErrorHandler

public DefaultResponseErrorHandler()

## Method Details

### hasError

public boolean hasError(ClientHttpResponse response) throws IOException
Delegates to `hasError(HttpStatusCode)` with the response status code.

Specified by:
  `hasError` in interface `ResponseErrorHandler`
Parameters:
  `response` - the response to inspect
Returns:
  `true` if the response indicates an error; `false` otherwise
Throws:
  `IOException` - in case of I/O errors
See Also:
  - `ClientHttpResponse.getStatusCode()`
  - `hasError(HttpStatusCode)`

### hasError

protected boolean hasError(HttpStatusCode statusCode)
Template method called from `hasError(ClientHttpResponse)`.

The default implementation checks `HttpStatusCode.isError()`. Can be overridden in subclasses.

Parameters:
  `statusCode` - the HTTP status code
Returns:
  `true` if the response indicates an error; `false` otherwise
See Also:
  - `HttpStatusCode.isError()`

### hasError

@Deprecated protected boolean hasError(int statusCode)
Deprecated.
in favor of `hasError(HttpStatusCode)`
Template method called from `hasError(ClientHttpResponse)`.

The default implementation checks if the given status code is `CLIENT_ERROR` or `SERVER_ERROR`. Can be overridden in subclasses.

Parameters:
  `statusCode` - the HTTP status code as raw value
Returns:
  `true` if the response indicates an error; `false` otherwise
Since:
  4.3.21
See Also:
  - `HttpStatus.Series.CLIENT_ERROR`
  - `HttpStatus.Series.SERVER_ERROR`

### handleError

public void handleError(URI url, HttpMethod method, ClientHttpResponse response) throws IOException
Handle the error in the given response with the given resolved status code and extra information providing access to the request URL and HTTP method.

The default implementation throws:

- `HttpClientErrorException` if the status code is in the 4xx series, or one of its sub-classes such as `HttpClientErrorException.BadRequest` and others.
- `HttpServerErrorException` if the status code is in the 5xx series, or one of its sub-classes such as `HttpServerErrorException.InternalServerError` and others.
- `UnknownHttpStatusCodeException` for error status codes not in the `HttpStatus` enum range.

Specified by:
  `handleError` in interface `ResponseErrorHandler`
Parameters:
  `url` - the request URL
  `method` - the HTTP method
  `response` - the response with the error
Throws:
  `UnknownHttpStatusCodeException` - in case of an unresolvable status code
  `IOException` - in case of I/O errors
Since:
  6.2
See Also:
  - `handleError(ClientHttpResponse, HttpStatusCode, URI, HttpMethod)`

### handleError

public void handleError(ClientHttpResponse response) throws IOException
Description copied from interface: `ResponseErrorHandler`
Handle the error in the given response.

This method is only called when `ResponseErrorHandler.hasError(ClientHttpResponse)` has returned `true`.

Specified by:
  `handleError` in interface `ResponseErrorHandler`
Parameters:
  `response` - the response with the error
Throws:
  `IOException` - in case of I/O errors

### handleError

protected void handleError(ClientHttpResponse response, HttpStatusCode statusCode, @Nullable URI url, @Nullable HttpMethod method) throws IOException
Handle the error based on the resolved status code.

The default implementation delegates to `HttpClientErrorException.create(org.springframework.http.HttpStatusCode, java.lang.String, org.springframework.http.HttpHeaders, byte[], java.nio.charset.Charset)` for errors in the 4xx range, to `HttpServerErrorException.create(org.springframework.http.HttpStatusCode, java.lang.String, org.springframework.http.HttpHeaders, byte[], java.nio.charset.Charset)` for errors in the 5xx range, or otherwise raises `UnknownHttpStatusCodeException`.

Throws:
  `IOException`
Since:
  6.2
See Also:
  - `HttpClientErrorException.create(org.springframework.http.HttpStatusCode, java.lang.String, org.springframework.http.HttpHeaders, byte[], java.nio.charset.Charset)`
  - `HttpServerErrorException.create(org.springframework.http.HttpStatusCode, java.lang.String, org.springframework.http.HttpHeaders, byte[], java.nio.charset.Charset)`

### getResponseBody

protected byte[] getResponseBody(ClientHttpResponse response)
Read the body of the given response (for inclusion in a status exception).

Parameters:
  `response` - the response to inspect
Returns:
  the response body as a byte array, or an empty byte array if the body could not be read
Since:
  4.3.8

### getCharset

@Nullable protected Charset getCharset(ClientHttpResponse response)
Determine the charset of the response (for inclusion in a status exception).

Parameters:
  `response` - the response to inspect
Returns:
  the associated charset, or `null` if none
Since:
  4.3.8

### initBodyConvertFunction

protected Function<org.springframework.core.ResolvableType,?> initBodyConvertFunction(ClientHttpResponse response, byte[] body)
Return a function for decoding the error content. This can be passed to `RestClientResponseException.setBodyConvertFunction(Function)`.

Since:
  6.0