首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rx-Java集中错误处理

Rx-Java集中错误处理
EN

Stack Overflow用户
提问于 2015-12-01 17:11:49
回答 1查看 580关注 0票数 3

我使用Retrofit作为带有Rx-Java的网络库。我想对大多数请求进行一些集中的错误检查,并处理错误,或者如果我不能处理它,就把它传递给订阅者的onError()。我怎么能这样做呢?

像这样的东西

代码语言:javascript
复制
 projectListObservable
    .subscribeOn(Schedulers.newThread())
    .timeout(App.NETWORK_TIMEOUT_SEC, TimeUnit.SECONDS)
    .retry(App.NETWORK_RETRY_COUNT)
    .onError(e -> {
     if (e instanseOf HttpError && ((HttpError)e).getCode == 403){
        App.getInstance.getNetworkManager.reAuth();
     } else {
        throw(e);
     }})
   .observeOn(AndroidSchedulers.mainThread())
   .subscribe(new ProjectListSubscriber());

此外,在这种情况下,我应该停止重试,但如果是网络问题(instanceof IOException),则继续重试。

EN

回答 1

Stack Overflow用户

发布于 2015-12-01 18:00:10

我认为你想用一个观察点实现太多的计时。

你可以有一些HttpErrorHandler,它将会有方法

代码语言:javascript
复制
boolean fix(Exception e) 

如果错误处理程序修复了异常(更新令牌等),则返回true。您可以针对不同的情况使用不同的错误处理程序,也可以使用一个用于所有情况的错误处理程序。TokenErrorHandler RetryErrorHandler,然后做一条链。

如果所有错误hadlers都返回false,则将此异常抛出到更高级别

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34016567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档