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回调中订阅流的错误. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |