-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Custom error handling
Patrick van Dissel edited this page May 13, 2014
·
1 revision
By default Feign only throws FeignException
for any error situation, but you probably want an application specific exception instead. This is easily done by providing your own implementation of feign.codec.ErrorDecoder
to Feign.builder.errorDecoder()
.
An example of such an ErrorDecoder
implementation could be as simple as:
public class StashErrorDecoder implements ErrorDecoder {
@Override
public Exception decode(String methodKey, Response response) {
if (response.status() >= 400 && response.status() <= 499) {
return new StashClientException(
response.status(),
response.reason()
);
}
if (response.status() >= 500 && response.status() <= 599) {
return new StashServerException(
response.status(),
response.reason()
);
}
return errorStatus(methodKey, response);
}
}
Which you can then provide in your Feign.builder()
like so:
return Feign.builder()
.errorDecoder(new StashErrorDecoder())
.target(StashApi.class, url);