Java 触发错误的onErrorContinue值中的项目反应器为空
我对使用project reactor编写的代码有一些问题:Java 触发错误的onErrorContinue值中的项目反应器为空,java,project-reactor,Java,Project Reactor,我对使用project reactor编写的代码有一些问题: <dependency> <groupId>io.projectreactor</groupId> <artifactId>reactor-core</artifactId> <version>3.2.12.RELEASE</version> </dependency> 根据onErrorContinu
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-core</artifactId>
<version>3.2.12.RELEASE</version>
</dependency>
根据onErrorContinue
中的文档,对象应该是导致错误的值。因此,我希望它是flatMap
中的ctx
对象。相反,它是空的
这是一个错误还是我对文档的理解有缺陷?关于
onErrorContinue
行为的推理可能会违反直觉,因此我始终建议尽可能避免使用它
根据onErrorContinue中的文档,对象应该是导致错误的值。因此,我希望它是flatMap中的ctx对象。相反,它是空的
啊,但是ctx
不是导致错误的值,因为您的外部flatMap()
调用工作正常-它只是中继内部Flux
中发生的错误(示例中的Flux.push()
行)。因为没有导致此错误的值(它只是引发了一个异常),没有报告任何值。因此,您在本示例中报告的行为正是我所期望的
如果您将该行更改为以下内容:
.flatMap(ctx -> Flux.push(sink -> sink.next(ctx)).flatMap(x -> Mono.error(new IllegalArgumentException("bum!"))))
…或:
.flatMap(ctx -> Flux.just(ctx).flatMap(x -> Mono.error(new IllegalArgumentException("bum!"))))
…然后你会看到类似于捕获错误bum!在obj:1591657236326
中,异常实际上有一个原因,即由操作员处理该值引起的错误
.flatMap(ctx -> Flux.push(sink -> sink.next(ctx)).flatMap(x -> Mono.error(new IllegalArgumentException("bum!"))))
.flatMap(ctx -> Flux.just(ctx).flatMap(x -> Mono.error(new IllegalArgumentException("bum!"))))