IZI*_*IZI 1 android reactive-programming rx-java
我在我的应用程序中遇到了一个问题,我在许多不同订阅的onError中检查特定错误(假设错误9000).所有这些都可能会或可能不会以相同的方式处理错误.而不是检查这些订阅的OnError中是否(错误== 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);
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
[我发明了一个NumberedException以此示例命名的异常类,您可能已经有了自己的异常类.]
| 归档时间: |
|
| 查看次数: |
959 次 |
| 最近记录: |