gpt4 book ai didi

java - 如果我在订阅期间出现异常怎么办?

转载 作者:行者123 更新时间:2023-12-01 08:58:40 25 4
gpt4 key购买 nike

我正在尝试将“第三方”发布者包装到 RxJava 中。在订阅期间,我正在准备发布者,这可能会导致异常(当发布者不可用时)。

遇到异常我该怎么办?

1)从订阅方法中抛出它?

2) 将其推送到观察者的 OnError 方法中?

3)还有别的吗?

我正在考虑推送到OnError,那么如何实现订阅呢?如果 OnError 应该是订阅中的最后一个事件,我是否应该认为订阅发生了?作为订阅返回什么?只是NOP lambda?

最佳答案

“发布者”和“包装”的含义有点不清楚。

例如,有一个 API 调用返回 Observable,但调用本身可能会引发未经检查的异常。一个简单的方法是使用 defer 来捕获该异常并将其转发给订阅者:

Observable.defer(() -> api.unreliableMethod())...

如果您的意思是您有一个 Reactive-Streams Publisher 和 RxJava 2,您可以简单地调用 Flowable.fromPublisher 或再次调用 Flowable.defer(( ) -> 发布者) 像上面一样。

否则,RxJavaReactiveStreams让我们将 Publisher 转换为 Observable(如果需要,可以 defer() 捕获异常的过程):

Observable.defer(() ->
RxJavaReactiveStreams.toObservable(api.unreliablePublisher()))...

关于java - 如果我在订阅期间出现异常怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41871128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com