2017-04-25 44 views
1

我在Android 1.7的語言級別上使用RxJava 1.x(所以不需要lambda的)。我正在嘗試使用zip()運算符合並4個流。但是,我使用的Func4實現可能會遇到需要以某種方式處理的IOException。但是,Func4#call()簽名不允許拋出異常。所以我想知道如何處理這些。理想情況下,例外情況將發送到SubscriberonError()方法,該方法將訂閱zip()操作產生的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 
    }}); 
} 

回答

3

只要將擴展RuntimeException當你IOException發生異常。它將被傳送到SubscriberonError回調。

+3

另請注意,您可以將IOE作爲原因包含在runtimeexception中,以便您可以檢索onError中的實際異常。 – njzk2

+0

感謝您的快速響應! – Matthias

3

您還可以使用:

Exceptions.propagate(throwable) 

它會換你的Throwable到的RuntimeException和onError的渠道傳遞。

相關問題