如何将 zip() 函数中的异常传递给订阅者

How to deliver exception in zip() function to subscriber

我在 Android 上使用 RxJava 1.x,语言级别为 1.7(所以请不要使用 lambda)。我正在尝试使用 zip() 运算符组合 4 个流。但是,我使用的 Func4 实现可能 运行 变成 IOException,需要以某种方式处理。但是,Func4#call() 签名不允许抛出异常。所以我想知道如何处理这些。理想情况下,异常将传递给 SubscriberonError() 方法,该方法将订阅 zip() 操作产生的 Observable

一些示例代码:

public Observable<R> combine(Observable<A> observable1, Observable<B> observable2, Observable<C> observable3, Observable<D> observable4) {
    return Observable<R>.zip(observable1, observable2, observable3, observable4, new Func4<A, B, C, D, R> {
    public R call(A a, B b, C c, D d) {
        // some code which may throw IOExceptions
    }});
}

当您的 IOException 发生时,只需抛出一个扩展 RuntimeException 的异常。它将传递给 SubscriberonError 回调。

您还可以使用:

Exceptions.propagate(throwable)

它会把你的Throwable包装到RuntimeException中并传递给onError通道。