我在Android上使用RxJava 1.x语言级别1.7(所以请不要使用lambda)。我正在尝试使用zip()
运算符组合4个流。但是,我使用的Func4
实现可能会遇到需要以某种方式处理的IOException
。但是,Func4#call()
签名不允许抛出异常。所以我想知道如何处理这些问题。理想情况下,异常将传递给onError()
Subscriber
方法,该方法将订阅Observable
操作产生的zip()
。
一些示例代码:
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
}});
}
答案 0 :(得分:3)
当RuntimeException
发生时,只需抛出一个延伸IOException
的异常。它将传递到onError
的{{1}}回调。
答案 1 :(得分:3)
你也可以使用:
Exceptions.propagate(throwable)
它会将Throwable包装成RuntimeException并传递onError通道。