gpt4 book ai didi

java - 如何在 Spring WebClient 中捕获 ConnectionException?

转载 作者:行者123 更新时间:2023-11-30 10:01:20 36 4
gpt4 key购买 nike

我在 RestTemplate 中有以下错误处理:

try {
restTemplate.postForObject(..);
} catch (ResourceAccessException e) {
throw new CustomException("host is down");
}

问题:如何使用 spring WebClient 实现相同的功能?

try {
webClient.post()...block();
} catch (Exception e) {
//cannot check due to package private access
//if (e instanceof Exceptions.ReactiveException)
if (e.getCause() instanceof java.net.ConnectException) {
throw new CustomException("host is down");
}
}

问题:我无法直接捕获 ConnectionException,因为它包含在 ReactiveException 中。我能比对任何真正的底层异常应用多个 instanceof 检查更好吗?

最佳答案

您将 react 性地处理错误,将 onErrorMap 与您在谓词中所做的检查结合使用(参见 https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Mono.html#onErrorMap-java.lang.Class-java.util.function.Function- )

注意:没有检查这是否编译,如果你愿意,你也可以用 instanceof 替换 isAssignableFrom 检查。

WebClient.post().....onErrorMap(t -> t.getCause.isAssignableFrom(ConnectException.class), t -> new CustomException("host is down"));

关于java - 如何在 Spring WebClient 中捕获 ConnectionException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57458858/

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