加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 05:32:08 所属栏目:Java 来源:网络整理
导读:我有5个观察器,用flatMap链接.如果前四个Observables产生异常,我想传播不同类型的异常到第五个. 如何实现? 谢谢. 附: 我已经提出了这个未经测试的解决方案: flatMap( // onNext new Func1BoolResponse,Observable?() { @Override public Observable? call
我有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回调中订阅流的错误.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读