メソッドを呼び出してもどこにObervable.subscribe(Action1)
もスローされないことを達成したいのですが、を呼び出すと、通常どおりエラーが発生したときに2番目のアクションが呼び出されます。私は2つの方法を試しました:OnErrorNotImplementedException
Obervable.subscribe(Action1, Action1)
.onErrorResumeNext(Observable.empty())
この方法OnErrorNotImplementedException
はスローされませんが、2 番目のアクションも渡すと、アクションも呼び出されません。
2番:
.lift(new Observable.Operator<T, T>() {
@Override
public Subscriber<? super T> call(Subscriber<? super T> subscriber) {
return new Subscriber<T>() {
@Override
public void onCompleted() {
if (!subscriber.isUnsubscribed()) {
subscriber.onCompleted();
}
}
@Override
public void onError(Throwable e) {
if (!subscriber.isUnsubscribed()) {
try {
subscriber.onError(e);
} catch (Throwable t) {
if (!(t instanceof OnErrorNotImplementedException)) {
throw t;
}
}
}
}
@Override
public void onNext(T t) {
if (!isUnsubscribed()) {
subscriber.onNext(t);
}
}
};
}
});
これの問題observeOn()
は、後で呼び出された場合、これは非同期になり、ここでの例外処理は明らかに機能しません。
これを達成する方法はありますか。をsubscribe()
投げないメソッドがあればいいのにと思います。OnErrorNotImplementedException
onError