我正在尝试将“第三方”发布者包装到 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/