我在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检查做得更好吗?
发布于 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检查。
WebClient.post().....onErrorMap(t -> t.getCause.isAssignableFrom(ConnectException.class), t -> new CustomException("host is down"));https://stackoverflow.com/questions/57458858
复制相似问题