我们正在使用 webflux,当找不到对象时我需要抛出错误。
我们有一个错误代码 ENTITY_NOT_FOUND,我们需要抛出一个 MyException() 以及错误代码的消息,我们需要从数据库中读取该消息 该存储库是 ReactiveCrudRepository。因此它返回一个 Mono,我们通过 map() 处理它并填充或翻译,然后返回一个 Mono,这是错误消息的最终形式。 从 switchIfEmpty 步骤中,我们尝试抛出使用此错误消息创建的 MyException
Mono.just(new MyEntity())
switchIfEmpty(Mono.error(new MyException())
.flatMap(...)
上面的代码块有效
private Mono<MyException> generateException(){...}
Mono.just(new MyEntity())
switchIfEmpty(generateException())
.flatMap(...)
对于上面的代码块,switchIfEmpty 抱怨如下
Required type: Mono<? extends MyEntity>
Provided: Mono<MyException>
一个项目中同时拥有JPA和Reactive仓库确实很麻烦。所以我试图通过反应性存储库来完成这件事
您可以将generateException()重构为:
private Mono<MyEntity> generateException() {
return Mono.error(new MyException());
}