很多操作符可用于對Observable發射的 onError
通知做出響應或者從錯誤中恢複,例如,你可以:
- 吞掉這個錯誤,切換到一個備用的Observable繼續發射資料
- 吞掉這個錯誤然後發射預設值
- 吞掉這個錯誤并立即嘗試重新開機這個Observable
- 吞掉這個錯誤,在一些回退間隔後重新開機這個Observable
這是操作符清單:
-
— 訓示Observable在遇到錯誤時發射一個資料序列onErrorResumeNext( )
-
— 訓示Observable在遇到錯誤時發射一個特定的資料onErrorReturn( )
-
— instructs an Observable to continue emitting items after it encounters an exception (but not another variety of throwable)訓示Observable遇到錯誤時繼續發射資料onExceptionResumeNext( )
-
— 訓示Observable遇到錯誤時重試retry( )
-
— 訓示Observable遇到錯誤時,将錯誤傳遞給另一個Observable來決定是否要重新給訂閱這個ObservableretryWhen( )
=========================================================、
Catch
從
onError
通知中恢複發射資料

Catch
操作符攔截原始Observable的
onError
通知,将它替換為其它的資料項或資料序列,讓産生的Observable能夠正常終止或者根本不終止。
在某些ReactiveX的實作中,有一個叫
onErrorResumeNext
的操作符,它的行為與
Catch
相似。
RxJava将
Catch
實作為三個不同的操作符:
onErrorReturn
讓Observable遇到錯誤時發射一個特殊的項并且正常終止。
onErrorResumeNext
讓Observable在遇到錯誤時開始發射第二個Observable的資料序列。
onExceptionResumeNext
讓Observable在遇到錯誤時繼續發射後面的資料項。
onErrorReturn
onErrorReturn
方法傳回一個鏡像原有Observable行為的新Observable,後者會忽略前者的
onError
調用,不會将錯誤傳遞給觀察者,作為替代,它會發發射一個特殊的項并調用觀察者的
onComleted
方法。
- Javadoc: onErrorReturn(Func1)
onErrorResumeNext
onErrorResumeNext
onError
調用,不會将錯誤傳遞給觀察者,作為替代,它會開始鏡像另一個,備用的Observable。
onExceptionResumeNext
和
onErrorResumeNext
類似,
onExceptionResumeNext
方法傳回一個鏡像原有Observable行為的新Observable,也使用一個備用的Observable,不同的是,如果
onError
收到的
Throwable
不是一個
Exception
,它會将錯誤傳遞給觀察者的
onError
方法,不會使用備用的Observable。