我正在学习使用 Flux/Mono 进行错误处理并遇到以下问题:
Flux.just("AAA", "BBB", "AAA", "CCC")
.map(s -> {
if (s.equals("AAA")) {
throw new IllegalArgumentException();
}
return s;
})
.map(s -> s + "-LOL")
.onErrorMap(IllegalArgumentException.class, cause -> new IllegalStateException())
.onErrorContinue(IllegalArgumentException.class, (e, a) -> System.out.println("Found IllegalArgumentException" + e))
.onErrorContinue(IllegalStateException.class, (e, a) -> System.out.println("Found IllegalStateException" + e))
.collectList()
.block();
我想做的是将一个错误异常映射到另一个异常,然后我想以特定的方式处理它。
在我的代码中,我看到 onErrorContinue
仅针对 IllegalArgumentException
触发,但我不明白为什么 - 我刚刚将错误映射到 非法状态异常
最佳答案
如果您开始使用响应式编程,我强烈建议您避免使用 onErrorContinue
。
这是一个非常具有误导性的运算符,适用于非常了解运算符内部工作原理的高级用户。我很遗憾每次提到它时都添加一个,并且正在考虑将其隐藏在公共(public) API 中,因为它很容易被认为是像这样简单的。 onErrorResume
。
考虑onErrorReturn
、onErrorResume
、doOnError
和subscribe(valueHandler, error -> doSomethingWithError(error))
相反。
关于java - onErrorMap 和 onErrorContinue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66132725/