onErrorResume 和 doOnError 的区别
Posted
技术标签:
【中文标题】onErrorResume 和 doOnError 的区别【英文标题】:The difference between onErrorResume and doOnError 【发布时间】:2020-01-29 17:53:22 【问题描述】:在spring project reactor中,onErrorResume
和doOnError
有什么区别?我什么时候应该每个人?
【问题讨论】:
【参考方案1】:onErrorResume
:当上游发生一些异常时给出一个回退流。
doOnError
:副作用运算符。假设您想记录上游发生的错误。
例子:
Mono.just(request)
.flatMap(this::makeHTTPGet)
.doOnError(err ->
log.error("Some error occurred while making the POST call",err)
)
.onErrorResume(err -> Mono.just(getFallbackResponse()));
你看,doOnError
是一个副作用运算符。这就像将温度计插入水管并读取温度。它会影响管道吗?没有。
假设现在管道破裂 - 城市仍然需要取水,对吗?所以我们有一个可以在这种情况下激活的备用管道。 onErrorResume
正是这样做的。
注意:您也可以登录onErrorResume
。没有什么能阻止你这样做。
【讨论】:
@MeladBasilius 对你有用吗?如果是,那么请考虑接受它。谢谢。 这个解释太好了!以上是关于onErrorResume 和 doOnError 的区别的主要内容,如果未能解决你的问题,请参考以下文章