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