Spring WebFlux - 区分异常类型

问题描述

我必须在 Spring WebFlux 链中处理不同的异常。有一个 WebClient 并且我需要有逻辑,它看起来像下面使用命令式风格的代码

try {

} catch (WebClientResponseException e) {
   // flow 1
} catch (TimeoutException e) {
  // flow 2
} catch (Exception e) {
  // flow 3
}

问题是在构建反应链时,我只能有一个异常类或谓词:

...
.onErrorMap(WebClientResponseException.class,e -> {...})
.onErrorMap(Exception.class,e -> {...}) 
// will also be called for WebClientResponseException,which is not expected

在这些情况下使用 instanceof 是一种常见的做法吗?类似的东西:

...
.onErrorMap(WebClientResponseException.class,e -> {...})
.onErrorMap(e -> !(e instanceof WebClientResponseException),which is not expected

.onErrorMap(e -> {
   if (e instanceof WebClientResponseException) {
      // flow 1
   } else if (e instanceof TimeoutException) {
      // flow 2
   } else {
     // flow 3
   }
})

我相信常规(非响应式)java instanceof 被认为是一种不好的做法,但是我认为响应式流没有更好的方法

分享您的想法

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)