Obervable.subscribe(Action1)
メソッドを呼び出すと、どこでもOnErrorNotImplementedException
が送出されませんが、Obervable.subscribe(Action1, Action1)
を呼び出すと、通常通りエラーが発生したときに2番目のアクションが呼び出されます。私は2つの方法を試みた:私も2番目のアクションを渡すがあれば、OnErrorNotImplementedExceptionを防止する
.onErrorResumeNext(Observable.empty())
OnErrorNotImplementedException
がスローされていない。この方法は、アクションはどちらか呼び出されることはありません。
第二:
.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
に投げない方法があることを望む。
ありがとうございます!はい、これは方法です。私の問題は、このようにして、私はサブスクライバのラムダ構文を失い、私は常に匿名クラスを追加する必要があるということです。 : – WonderCsabo
ラムダまたはサブクラスで空の 'onError()'実装を渡す以外の方法はありませんので、私はこの答えを受け入れています。 – WonderCsabo
@WonderCsabo下の私のソリューションをチェックしてください – FireZenk