gpt4 book ai didi

android - RxJava : Can I override OnError or create a custom Observable which handles a specific error

转载 作者:行者123 更新时间:2023-11-29 15:13:29 25 4
gpt4 key购买 nike

我在我的应用程序中遇到了一个问题,我正在检查许多不同订阅的 onError 中的特定错误(比如说错误 9000)。他们可能会或可能不会以相同的方式处理错误。除了在这些订阅的 OnError 中检查 if(error == 9000) 之外,还有一种方法可以创建自定义 Observable 或运算符来专门检查此错误或类似 .doOn9000Error()

最佳答案

您可以编写一个简单的函数 handleErr9000,它接受一个 Observable,并将其转换为正确处理错误 9000 的函数。您需要的是 onErrorResumeNext 运算符:它接受一个函数,该函数获取发生的错误,并可以根据错误的类型决定继续执行哪个 Observable 序列。

public static <T> Observable<T> handleErr9000(Observable<T> o) {
return o.onErrorResumeNext(new Func1<Throwable, Observable<T>>() {
public Observable<T> call(Throwable err) {
if (err instanceof NumberedException
&& ((NumberedException) err).number == 9000)
{
// Handle this specific error ...
// Then return Observable.error(err) if you want to keep
// the error, or Observable.just(someDefaultValue) to
// substitute the error by a default value,
// or Observable.empty() to swallow the error
return Observable.empty();
} else {
// just pass on the error if it's a different error
return Observable.error(err);
}
}
});
}

[我为此示例发明了一个名为 NumberedException 的异常类,您可能已经为此创建了自己的异常类。]

关于android - RxJava : Can I override OnError or create a custom Observable which handles a specific error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27624446/

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