Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android onErrorResumeNext的rxjava行为_Android_Rx Java_System.reactive - Fatal编程技术网

Android onErrorResumeNext的rxjava行为

Android onErrorResumeNext的rxjava行为,android,rx-java,system.reactive,Android,Rx Java,System.reactive,我很难让Observer.onerror按照我的预期行事 Subscriber orchestratorObserver = new Subscriber<Integer>() { @Override public void onCompleted() { System.out.println("orchestratorObserver."+"onCompleted()"); } @Override public void o

我很难让Observer.onerror按照我的预期行事

Subscriber orchestratorObserver = new Subscriber<Integer>() {
    @Override
    public void onCompleted() {
        System.out.println("orchestratorObserver."+"onCompleted()");
    }

    @Override
    public void onError(Throwable e) {
        System.out.println("orchestratorObserver."+"onError()"+e.getMessage());
    }

    @Override
    public void onNext(Integer i) {
        System.out.println("orchestratorObserver."+"onNext() : "+i);
    }
};

@Test
public void rxTest() {
    Observable.range(0,5)
            .doOnNext(new Action1<Integer>() {
                @Override
                public void call(Integer integer) {
                    throw new RuntimeException("chain error!!");
                }
            })
            .onErrorResumeNext(Observable.just(-1))
            .subscribe(orchestratorObserver);
}

@Test
public void rxTest1() {

    final Observable<Integer> errorTrainObservable = Observable.defer(
            new Func0<Observable<Integer>>() {
                @Override
                public Observable<Integer> call() {
                    return Observable.error(new RuntimeException("source error"));
                }
            });

    errorTrainObservable.onErrorResumeNext(Observable.just(-1));

    errorTrainObservable.subscribe(orchestratorObserver);
}
当rxTest1()输出时:

我希望rxTest1输出与rxTest相同的onNext事件-我如何才能做到这一点?i、 e.我想接受错误并在下一个事件上发出一个defualt值

奇怪的是,如果错误在源位置,它的行为是一种方式——但如果错误是链,它的行为是另一种方式?如果你能向我解释的话,还有额外的要点:)

这些行:

errorTrainObservable.onErrorResumeNext(Observable.just(-1));

errorTrainObservable.subscribe(orchestratorObserver);
您使用错误处理程序创建了一个可观察的
,然后将其丢弃,然后在不使用错误处理程序的情况下订阅可观察的。

以下几行:

errorTrainObservable.onErrorResumeNext(Observable.just(-1));

errorTrainObservable.subscribe(orchestratorObserver);
您使用错误处理程序创建了一个
可观察的
,然后将其丢弃,然后在不使用错误处理程序的情况下订阅可观察的

errorTrainObservable.onErrorResumeNext(Observable.just(-1));

errorTrainObservable.subscribe(orchestratorObserver);