gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 14:39:56 25 4
gpt4 key购买 nike

我有 5 个 ObservableflatMap 链接的 s .万一前四 Observable s 生产 Exception我想传播不同类型的 Exception到第五。

它是如何实现的?

谢谢。

附言
我想出了这个尚未经过测试的解决方案:

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 或另一个 Observable 继续这会发出不同的 Throwable .

    ...
.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订阅流的回调。

关于rx-java - RxJava 链接 observables 和错误处理(自定义异常传播),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26232972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com