【问题标题】:How do I map errors in rxJava?如何在 rxJava 中映射错误?
【发布时间】:2021-12-30 12:18:55
【问题描述】:

如何转换由 rxJava 中的 Observable 返回的错误? 现在我有了这个方法:


@Override
    public Maybe<JsonObject> getUser(String token) {
        return tokenManager.getTokenInfo(token)    //returns a Single<UserInfo>
            .flatMapMaybe(userInfo -> userRepo.findOne(userInfo));
    }

行为是getTokenInfofindOne 传递的任何异常都会传播到此函数返回值的订阅者。是否可以将异常映射到其他东西?喜欢

@Override
    public Maybe<JsonObject> getUser(String token) {
        return tokenManager.getTokenInfo(token)
            mapError(exc -> new AuthException("invalid token"))  //don't let subscriber get raw exc
            .flatMapMaybe(userInfo -> userRepo.findOne(userInfo))
            .mapError(exc -> new NetworkException());


    }

【问题讨论】:

    标签: java exception rx-java


    【解决方案1】:

    onErrorResumeNext 与所需异常的error 源一起使用:

    return tokenManager.getTokenInfo(token)
           .onErrorResumeNext(exc -> Single.error(new AuthException("invalid token")))
           .flatMapMaybe(userInfo -> userRepo.findOne(userInfo))
           .onErrorResumeNext(exc -> Maybe.error(new NetworkException()));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-09
      • 1970-01-01
      相关资源
      最近更新 更多