Rx java 转换dto时自定义onError映射rxjava

Rx java 转换dto时自定义onError映射rxjava,rx-java,Rx Java,我有以下从外部服务检索数据的方法。该数据作为dto接收,我需要将其转换为实体对象。现在,如果出现问题,将抛出ProviderNotReachableException,但是,当转换逻辑中出现错误时,我希望抛出另一个异常,例如:NumberFormat exception。由于我对rxjava比较陌生,所以我想从高级开发人员那里得到关于这个问题的建议。 谢谢 豪尔赫 @覆盖 来自供应商的公众可观察行程(最终飞行规范飞行规范, 最终字符串提供程序){ 最终映射参数=getQueryParams(fl

我有以下从外部服务检索数据的方法。该数据作为dto接收,我需要将其转换为实体对象。现在,如果出现问题,将抛出ProviderNotReachableException,但是,当转换逻辑中出现错误时,我希望抛出另一个异常,例如:NumberFormat exception。由于我对rxjava比较陌生,所以我想从高级开发人员那里得到关于这个问题的建议。 谢谢 豪尔赫

@覆盖
来自供应商的公众可观察行程(最终飞行规范飞行规范,
最终字符串提供程序){
最终映射参数=getQueryParams(flightSpecification);
返回此.providerService.Cineraries(提供程序,参数)
.concatMapIterable(巡回数据列表->巡回数据列表)
.map(it->{
debug(“在线程中转换:{}”,thread.currentThread().getName());
返回行程转换器。从行程到行程(it);
})
托利斯先生()
.subscribeOn(Schedulers.io())
.doError(可丢弃->新提供程序不可访问异常(格式(“用于输入字符串%s”,提供程序),可丢弃))
.toObservable();
}

您可以使用
onErrorResumeNext
操作符代替
doError
,它以
Throwable
作为输入(我们得到的
onError
)作为参数获取函数,并返回
Observable
作为输出,使用此运算符,您可以使用
Observable.error
将任何异常映射到不同的异常:

.onErrorResumeNext(throwable -> {
                if (throwable instanceof ProviderNotReachableException) {
                    return Observable.error(new MyCustomException());
                } else {
                    return Observable.error(throwable);
                }
            });
.onErrorResumeNext(throwable -> {
                if (throwable instanceof ProviderNotReachableException) {
                    return Observable.error(new MyCustomException());
                } else {
                    return Observable.error(throwable);
                }
            });