Project Reactor:关于错误处理的可能具有误导性的文档
Project Reactor: possibly misleading documentation about error handling
我正在阅读有关错误处理的 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
方法的一部分进行处理,因为在处理值时可能不会发生相关错误。例如,它可能在处理背压(即请求更多元素)或订阅时发生。
我正在阅读有关错误处理的 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
方法的一部分进行处理,因为在处理值时可能不会发生相关错误。例如,它可能在处理背压(即请求更多元素)或订阅时发生。