下面是代码片段;基本上,当错误代码不是 200 时,我试图传播异常。
ResponseEntity<Object> response = restTemplate.exchange(url.toString().replace("{version}", version),
HttpMethod.POST, entity, Object.class);
if(response.getStatusCode().value()!= 200){
logger.debug("Encountered Error while Calling API");
throw new ApplicationException();
}
但是,如果服务器发出 500 响应,我会收到异常
org.springframework.web.client.HttpServerErrorException: 500 Internal Server Error
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:94) ~[spring-web-4.2.3.RELEASE.jar:4.2.3.RELEASE]
我真的需要在 try 中包装其余的模板交换方法吗?那么代码的目的是什么?
原文由 vaibhav 发布,翻译遵循 CC BY-SA 4.0 许可协议
你想创建一个实现
ResponseErrorHandler
的类,然后使用它的一个实例来设置你的 rest 模板的错误处理:此外,Spring 有类
DefaultResponseErrorHandler
,您可以扩展它而不是实现接口,以防您只想覆盖handleError
方法。查看它的 源代码,了解 Spring 如何处理 HTTP 错误。