rx-java – RxJava链接可观察和错误处理(自定义异常传播)

前端之家收集整理的这篇文章主要介绍了rx-java – RxJava链接可观察和错误处理(自定义异常传播)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有5个观察器,用flatMap链接.如果前四个Observables产生异常,我想传播不同类型的异常到第五个.

如何实现?

谢谢.

附:
我已经提出了这个未经测试的解决方案:

flatMap(
        // onNext
        new Func1<BoolResponse,Observable<?>>() {
            @Override
            public Observable<?> call(BoolResponse boolResponse) {
                return request;
            }
        },// onError
        new Func1<Throwable,Observable<?>>() {
            @Override
            public Observable<?> call(Throwable throwable) {
                return Observable.error(new SomethingWentWrong());
            }
        },// onCompleted
        new Func0<Observable<?>>() {
            @Override
            public Observable<?> call() {
                return request;
            }
});

你觉得没关系吗

解决方法

您正在寻找的是onErrorResumeNext,它将允许您捕获源中发出的任何Throwable,并允许您使用新的Observable或另一个可发出不同Throwable的Observable来恢复.
...
    .flatMap(...)
    .flatMap(...)
    .onErrorResumeNext(new Func1<Throwable,Observable<?>>() {
        @Override
        public Observable<?> call(Throwable throwable) {
            // Here simply return an Observable which will emit the Throwable of your liking
            return Observable.error(new Throwable(...));
        }
    })
    .flatMap(...);

请记住,flatMap是处理您的数据流的运算符,但您的代码示例中不允许您处理onError.您可以处理您在Observer的onError回调中订阅流的错误.

猜你在找的Java相关文章