自定义onError映射dto时映射rxjava

时间:2018-06-29 20:04:21

标签: rx-java

我有以下从外部服务检索数据的方法。此数据作为dto接收,我需要将其转换为实体对象。现在,如果存在问题ProviderNotReachableException抛出,但是当翻译逻辑中存在错误时,例如,NumberFormat异常,我想抛出另一个异常。由于我是rxjava的新手,所以我希望就此事向高级开发人员征求意见。 谢谢, 豪尔赫

 @Override
    public Observable<List<Itinerary>> itinerariesFromProvider(final FlightSpecification flightSpecification,
                                                               final String provider) {

        final Map<String, Object> params = getQueryParams(flightSpecification);

        return this.retrofitProviderService.itineraries(provider, params)
                .concatMapIterable(itineraryDtoList -> itineraryDtoList)
                .map(it -> {
                    logger.debug("Translating in thread: {}", Thread.currentThread().getName());
                    return itineraryTranslator.fromItineraryDtoToItinerary(it);
                })
                .toList()
                .subscribeOn(Schedulers.io())
                .doOnError(throwable -> new ProviderNotReachableException(format("For input string %s", provider), throwable))
                .toObservable();
    }

1 个答案:

答案 0 :(得分:1)

您可以使用doOnError来代替onErrorResumeNext,它使用Throwable作为输入(我们得到的onError)作为函数,并返回{{ 1}}作为输出,使用此运算符,您可以使用Observable将所需的异常映射到另一个异常:

Observable.error
相关问题