從onError
通知中恢復發(fā)射數(shù)據(jù)
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/catch.png" alt="catch" />
Catch
操作符攔截原始Observable的onError
通知,將它替換為其它的數(shù)據(jù)項或數(shù)據(jù)序列,讓產(chǎn)生的Observable能夠正常終止或者根本不終止。
在某些ReactiveX的實現(xiàn)中,有一個叫onErrorResumeNext
的操作符,它的行為與Catch
相似。
RxJava將Catch
實現(xiàn)為三個不同的操作符:
onErrorReturn
讓Observable遇到錯誤時發(fā)射一個特殊的項并且正常終止。
onErrorResumeNext
讓Observable在遇到錯誤時開始發(fā)射第二個Observable的數(shù)據(jù)序列。
onExceptionResumeNext
讓Observable在遇到錯誤時繼續(xù)發(fā)射后面的數(shù)據(jù)項。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/onErrorReturn.png" alt="onErrorReturn" />
onErrorReturn
方法返回一個鏡像原有Observable行為的新Observable,后者會忽略前者的onError
調(diào)用,不會將錯誤傳遞給觀察者,作為替代,它會發(fā)發(fā)射一個特殊的項并調(diào)用觀察者的onCompleted
方法。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/onErrorResumeNext.png" alt="onErrorResumeNext" />
onErrorResumeNext
方法返回一個鏡像原有Observable行為的新Observable,后者會忽略前者的onError
調(diào)用,不會將錯誤傳遞給觀察者,作為替代,它會開始鏡像另一個,備用的Observable。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/onExceptionResumeNextViaObservable.png" alt="onExceptionResumeNext" />
和onErrorResumeNext
類似,onExceptionResumeNext
方法返回一個鏡像原有Observable行為的新Observable,也使用一個備用的Observable,不同的是,如果onError
收到的Throwable
不是一個Exception
,它會將錯誤傳遞給觀察者的onError
方法,不會使用備用的Observable。