系列故事的第5篇介绍RxJava的异常处理API
onErrorReturn
onErrorReturn让Observable遇到错误时发射一个特殊的项并且正常终止。
onErrorResumeNext
onErrorResumeNext让Observable在遇到错误时开始发射第二个Observable的数据序列。
onExceptionResumeNext
onExceptionResumeNext和onErrorResumeNext很相似,不同的是,如果onError收到的Throwable不是一个Exception,它会将错误传递给观察者的onError方法,不会使用备用的Observable。
retry
retry操作符不会将原始Observable的onError通知传递给观察者,它会订阅这个Observable,再给它一次机会无错误地完成它的数据序列。Retry总是传递onNext通知给观察者,由于重新订阅,可能会造成数据项重复。无论收到多少次onError通知,无参数版本的retry都会继续订阅并发射原始Observable。接受单个count参数的retry会最多重新订阅指定的次数,如果次数超了,它不会尝试再次订阅,它会把最新的一个onError通知传递给它的观察者。
retryWhen
retryWhen和retry类似,区别是,retryWhen将onError中的Throwable传递给一个函数,这个函数产生另一个Observable,retryWhen观察它的结果再决定是不是要重新订阅原始的Observable。如果这个Observable发射了一项数据,它就重新订阅,如果这个Observable发射的是onError通知,它就将这个通知传递给观察者然后终止。
总结:
以上的方法已经基本例举了RxJava中有关Observable对象过滤的API,具体用法还需要大家多加练习呀!
注:本人会在此系列文章的末尾加上GitHub源码地址,敬请期待。。。