当通过RestTemplate调用服务发生异常时,往往会返回400 Bad Request或500 internal error等错误信息。如果想捕捉服务本身抛出的异常信息,需要通过自行实现RestTemplate的ErrorHandler。
RestTemplate实例可以通过调用setErrorHandler方法设置ErrorHandler,实现对请求响应异常的判别和处理。自定义的ErrorHandler需实现ResponseErrorHandler接口,同时Spring boot也提供了默认实现DefaultResponseErrorHandler,因此也可以通过继承该类来实现自己的ErrorHandler。
getForObject和postForObject方法调用底层doExecute方法来执行HTTP请求,通过Spring boot中doExecute方法可以看到RestTemplate在进行HTTP请求时分成了三个步骤:
1)创建请求,获取响应;
2)判断响应是否异常,处理异常
3)将响应消息体封装为java对象
Object varl4;
// 1 创建请求,获取响应
ClientHttpRequest request = this.createRequest(url, method);
if (requestCallback != null) {
requestCallback.doWithRequest(request);
}
response = requ