gpt4 book ai didi

Spring RestTemplate异常处理

转载 作者:行者123 更新时间:2023-12-01 19:27:51 28 4
gpt4 key购买 nike

下面是代码片段。基本上,当错误代码不是 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 中吗?那么代码的目的是什么?

最佳答案

您想要创建一个实现 ResponseErrorHandler 的类然后使用它的实例来设置其余模板的错误处理:

public class MyErrorHandler implements ResponseErrorHandler {
@Override
public void handleError(ClientHttpResponse response) throws IOException {
// your error handling here
}

@Override
public boolean hasError(ClientHttpResponse response) throws IOException {
...
}
}

[...]

public static void main(String args[]) {
RestTemplate restTemplate = new RestTemplate();
restTemplate.setErrorHandler(new MyErrorHandler());
}

此外,Spring 有类 DefaultResponseErrorHandler ,如果您只想覆盖 handleError ,您可以扩展它而不是实现接口(interface)。方法。

public class MyErrorHandler extends DefaultResponseErrorHandler {
@Override
public void handleError(ClientHttpResponse response) throws IOException {
// your error handling here
}
}

看看它的source code了解 Spring 如何处理 HTTP 错误。

关于Spring RestTemplate异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59292490/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com