美文网首页
RxJava(七)--错误处理操作符

RxJava(七)--错误处理操作符

作者: azu_test | 来源:发表于2019-03-11 16:10 被阅读0次

    错误处理操作符

    catch、retry

    实例与功能介绍

    1. catch操作符

    代码实例

            Observable observable = Observable.create(new Observable.OnSubscribe<Integer>() {
                @Override
                public void call(Subscriber<? super Integer> subscriber) {
                    for (int i=0;i<10;i++){
                        if (i>2){
                            subscriber.onError(new Throwable("test"));
                        }
                        subscriber.onNext(i);
                    }
                    subscriber.onCompleted();
                }
            });
    
            observable = observable.onErrorReturn(new Func1<Throwable,Integer>() {
                @Override
                public Integer call(Throwable o) {
                    return 13;
                }
            });
    

    结果

    结果: 0
    结果: 1
    结果: 2
    结果: 13
    结束
    

    功能:catch操作符拦截原始Observable的onError通知,将他替换为其他数据项或数据序列,让Observable能够正常终止或者根本不终止。

    • onErrorReturn:Observable遇到错误时使用备用的Observable,忽略原有Observable的onError调用;会调用一个特殊的项并调用观察者的onCompleted方法。
    • onErrorResumeNext:Observable遇到错误时使用备用的Observable,忽略原有Observable的onError调用;发射备用Observable的数据。
    • onExceptionResumeNext:onErrorResumeNext类似。不同的是如果onError收到的异常不是Exception时,不会使用备用的Observable,而是把错误数据传递给观察者的onError方法。
    2. retry操作符

    代码实例

            Observable observable = Observable.create(new Observable.OnSubscribe<Integer>() {
                @Override
                public void call(Subscriber<? super Integer> subscriber) {
                    for (int i=0;i<10;i++){
                        if (i>2){
                            subscriber.onError(new Throwable("test"));
                        }
                        subscriber.onNext(i);
                    }
                    subscriber.onCompleted();
                }
            });
    
            observable = observable.retry(2);
    

    结果

    结果: 0
    结果: 1
    结果: 2
    结果: 0
    结果: 1
    结果: 2
    结果: 0
    结果: 1
    结果: 2
    异常
    

    功能:retry操作符不会将原始Observable的onError传递给观察者,它会订阅这个Observable,再给他一次机会无错误地重新完成其数据序列。

    相关文章

      网友评论

          本文标题:RxJava(七)--错误处理操作符

          本文链接:https://www.haomeiwen.com/subject/ecyrpqtx.html