假设我有这样的东西:
Mono.just(a)
.flatMap(...) // init
// set fields on a if error occurs
.flatMap(...) // finalize
.subscribe();
在最后一个flatMap
中,我正在根据a
中字段的值执行一些最终逻辑。特别是我需要知道初始化期间是否发生了错误...
因此,我需要一种可以拦截错误并允许操作原始对象的方法。
如果我没记错的话,所有onError*
方法都将返回原始对象而不允许对其进行更新。
[doOnError
似乎也不能解决我的问题。
有没有办法实现我所需要的?
[您缺少每个下一个反应式运算符都会为我们构建一个新的Mono
实例的事实。因此,如果再添加一个运算符,这对您来说并不重要:
/**
* Simply emit a captured fallback value when any error is observed on this {@link Mono}.
*
* <p>
* <img class="marble" src="doc-files/marbles/onErrorReturnForMono.svg" alt="">
*
* @param fallback the value to emit if an error occurs
*
* @return a new falling back {@link Mono}
*/
public final Mono<T> onErrorReturn(final T fallback) {
Mono.just(a)
.flatMap(...)
.onErrorReturn(fallbackValue)
.flatMap(...)
.subscribe();
您绝对可以研究所有其他onError*
以获得任何可能的错误处理变体。