验证并在 Flux 中抛出异常不起作用

Posted

技术标签:

【中文标题】验证并在 Flux 中抛出异常不起作用【英文标题】:Validation and throwing an exception inside a Flux is not working 【发布时间】:2021-03-15 09:14:14 【问题描述】:

我试图在try catch 中使用reactor.core.publisher.Flux 来验证list 的值,但是当map 抛出异常时,catch 根本不会捕获它。我真的不明白这里发生了什么。一些帮助将不胜感激。

这正是我想要做的:

 public Flux<Something> execute(final List<Line> lines) 
        try 
          return this.getFlux(lines)
              .map(line -> this.validateLine(line))//this throws my custom exception if the condition applies
              .map(line -> this.doSomething(line))
              .map(line -> this.doSomethingElse(line));

         catch (myCustomException e) 
            return something;
        
  

我可以看到validate 方法运行良好并通过调试引发异常,但catch 似乎不起作用,我看不出有什么问题。

【问题讨论】:

这真的与 java 流有关,而不是与 Flux 的反应管道有关吗? 其实是的,这和Flux有关,我从来没有见过他们,我想了解他们是如何工作的 【参考方案1】:

您需要在流的末尾应用一个终端操作。流被延迟评估。

【讨论】:

以上是关于验证并在 Flux 中抛出异常不起作用的主要内容,如果未能解决你的问题,请参考以下文章

捕获 AuthenticationProvider 中抛出的异常

Dart:让流中抛出的异常传播并在调用者中捕获它

返回带有错误的响应,而不是在验证管道 mediatr 3 中抛出异常

捕获在不同线程中抛出的异常

如何在扩展中抛出异常?

在 PHP Try Catch 块中抛出异常