我正在阅读有关错误处理的Reactor参考文档,似乎有些错误。例如关于fallback method的这一节:
Flux.just("key1", "key2")
.flatMap(k -> callExternalService(k))
.onErrorResume(e -> getFromCache(k));
但onErrorResume()
lambda只需要一个参数e
(错误抛出)。 k
(焊剂发出的先前值)如何在此处引用?
文档中还有其他类似的代码片段。我读错了吗?或者,如果文档确实不正确,我该如何处理这种情况:通过执行具有先前值的备用路径从错误中恢复?
是的,我认为您在文档中发现了一个错误。
如果你想使用k
,那么onErrorResume
的调用必须发生在flatMap
的参数内,如下所示:
Flux.just("key1", "key2")
.flatMap(k -> callExternalService(k)
.onErrorResume(e -> getFromCache(k))
);
关于您的评论:不可能将值作为onErrorXXX
方法的一部分进行处理,因为在处理值时可能不会发生有问题的错误。也许它发生在例如处理背压(即请求更多元素)或订阅时。