Java 触发错误的onErrorContinue值中的项目反应器为空

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

我对使用project reactor编写的代码有一些问题:

<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!"))))