首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Spring WebClient中捕获ConnectionException?

如何在Spring WebClient中捕获ConnectionException?
EN

Stack Overflow用户
提问于 2019-08-12 17:41:47
回答 1查看 1.5K关注 0票数 6

我在RestTemplate中有以下错误处理

代码语言:javascript
复制
try {
   restTemplate.postForObject(..);
} catch (ResourceAccessException e) {
   throw new CustomException("host is down");
}

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

代码语言:javascript
复制
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检查做得更好吗?

EN

回答 1

Stack Overflow用户

发布于 2019-08-12 18:12:36

您可以使用带有在谓词中执行的检查的onErrorMap来反应性地处理错误(请参阅https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Mono.html#onErrorMap-java.lang.Class-java.util.function.Function-)

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

代码语言:javascript
复制
WebClient.post().....onErrorMap(t -> t.getCause.isAssignableFrom(ConnectException.class), t -> new CustomException("host is down"));
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57458858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档