我想要實現,如果我打電話Obervable.subscribe(Action1)
方法,它不扔OnErrorNotImplementedException
任何地方,但如果我打電話Obervable.subscribe(Action1, Action1)
,第二個動作被稱爲當正常提出錯誤時調用。我嘗試了兩種方式:防止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()
方法,它不會在onError
中丟出OnErrorNotImplementedException
。
謝謝!是的,這是一種方式。我的問題是,以這種方式,我鬆開了用戶的lambda語法,我總是不得不添加匿名類。 :( – WonderCsabo
顯然,除了傳遞一個空的'onError()'實現,無論是lambda還是子類,沒有別的辦法,所以我接受這個答案。 – WonderCsabo
查看下面的解決方案@WonderCsabo – FireZenk