我正在做一个新项目,代码库中充满了这样的语句:
someFunctionThatReturnsAMono().onErrorResume(Mono::error)...其中函数的原型可能是:
public Mono<Data> someFunctionThatReturnsAMono()这个onErrorResume(Mono::error)是做什么的?没有人能解释,我的理解是,只有当我们已经有一个Mono::error时,才会调用onErrorResume,所以这个语句实际上是无用的。
发布于 2020-11-17 21:50:39
它没有添加任何东西(除了调度程序上的另一个步骤),它只是将可抛出的从/到错误信号展开和重新包装。请注意,它对可抛出对象本身没有任何影响,因此它不会有“原因”或类似的东西。
@Test
public void rethrow() {
StepVerifier.create(Mono.just("hi")
.handle((it, sink) -> sink.error(new RuntimeException(it)))
.log("sink")
.onErrorResume(it -> Mono.error(it))
.log("resume"))
.expectSubscription()
.expectError(RuntimeException.class)
.verify();
}等价的帝国主义代码看起来像这样:
try{
throw new RuntimeException();
}catch (RuntimeException ex){
throw ex;
}有关这方面的更多信息,请访问:https://projectreactor.io/docs/core/release/reference/#which.errors
https://stackoverflow.com/questions/64857238
复制相似问题