当前位置: 首页 > 知识库问答 >
问题:

Rx-Java集中式错误处理

谭高峯
2023-03-14

像这样的东西

 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)则保持重试。

共有1个答案

濮阳翔
2023-03-14

我认为您想用单个可观察到的实现太多的tihngs。

您可以使用一些HttpErrorHandler,它将具有方法

boolean fix(Exception e) 

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

 类似资料:
  • 在改型2之前,有一种集中处理错误的方法- 但是现在在restfit 2中,RestAdapter已经重命名为,并且没有。是否有一种方法可以使用进行集中式错误处理?

  • 我有三种不同的系统。我使用Spring integration来同步所有这些系统中的数据。 系统2将调用服务方法来持久化数据,如果请求有效,则返回响应,否则抛出异常 我需要发送服务方法响应到系统1和系统3,只有当操作成功。调用服务方法后,根据服务方法响应,使用Transformer生成对系统3的请求。在transformer之后,我将请求放入mq队列。 更新的JMS出站代码 如果服务类失败,我需要

  • 但是,使用retrofit每个请求都有其错误处理回调: 我如何在一个地方处理所有错误?

  • 场景可能是:我的期望可能是批量10个数据点,我想对{failed 5,pass 5}或其他什么给出响应。 我的逻辑是将批处理拆分为数据元素并进行验证 成功的验证将发送给aggreagtor, 失败的验证将抛出错误并通过错误通道拾取。 收件人列表路由器将错误通道作为输入通道,并连接2个过滤器,目的是过滤某些类型的错误直接发送响应(与用户输入无关的信息-服务器错误等),某些类型的客户端错误将转到聚合器

  • 在Spring integration中,我必须处理动态通道创建,但当我调试应用程序时,我看到不同通道之间的“阻塞”问题。 我知道是一个公共通道,在父上下文中共享,但如何为每个子上下文开发一个完整的独立场景?。公共网关是问题所在吗? 我在Spring integration flow async中看到了post错误处理,但对于每个子级,我都有一个完整的分离环境,我希望利用这些动态分离的优势。这可能

  • 本文向大家介绍rx-java PublishSubject,包括了rx-java PublishSubject的使用技巧和注意事项,需要的朋友参考一下 示例 PublishSubject只向观察者发送那些在订阅时间之后由源Observable发出的对象。 一个简单的PublishSubject例子: 输出: 在上面的示例中,aPublishSubject订阅了一个Observable类似于时钟的,