在很多情况下,布尔变量开始一个反应性序列,并且如果它们是某个值(大多数为false),则应该抛出异常并破坏序列。例如
Mono.just(foo.isValid())
.flatMap(b -> b ? Mono.empty() : Mono.error(new FooNotValidException(foo.detail1, foo.detail2)))
.then(bar.doProcess())
.flatMap(b -> b ? Mono.empty() : Mono.error(new BarProcessingNotSuccessful(bar.detail1, bar.detail2)))
....
如果foo
无效,则bar
不会执行,并且序列会中断,但有详细的例外情况,如果bar
处理失败,也是如此。
那是我设法达到的最短的距离,但是有很多重复,所以我想知道这是否可以减少冗长?
答案 0 :(得分:0)
在Borises评论中,我将上面的代码示例重写为
Mono.fromRunnable(foo::isValidOrThrow) // may throw FooNotValidException
.then(Mono.fromRunnable(bar::doProcessOrThrow)) // may throw BarProcesingNotSuccessful
....
这看起来好很多。