2017-08-25 14 views
0

発生した例外をRxJava2の別の例外にマップするにはどうすればよいですか?たとえば :この場合RxJavaのマッピング例外2

doOnError(throwable -> { 
    if (throwable instanceof FooException) { 
     throw new BarException(); 
    } 
}) 

は、私は最終的にFooExceptionBarExceptionから構成さCompositeException受けるが、私は唯一のBarExceptionを受け取りたいです。助けて!

答えて

2

あなたはそれからObservable.errorを()onErrorResumeNextを使用して返すことができます。

source.onErrorResumeNext(e -> Observable.error(new BarException())) 

編集

このテストでは、私のために渡します。

@Test 
public void test() { 
    Observable.error(new IOException()) 
    .onErrorResumeNext((Throwable e) -> Observable.error(new IllegalArgumentException())) 
    .test() 
    .assertFailure(IllegalArgumentException.class); 
} 
+0

それは動作しませんし、 'doOnError'と同じ結果を返します – piotrek00

+0

私はこのような置換作業を実証する単体テストで私の答えを更新しました。 – akarnokd

+0

あなたのソリューションは機能します!ありがとうございました! – piotrek00

関連する問題