如何使用rxjava1.x向调用方抛出异常,而不是处理异常?
我有一个使用RxJava的方法,它调用jackson对象映射器将json对象反序列化为java对象(POJO)。readValue方法抛出一个IOException,该IOException必须被处理或抛出给我的方法的调用方。我不应该在这里处理,而是让我的来电者来处理。如何在RxJava中实现这一点?通常它只需要将如何使用rxjava1.x向调用方抛出异常,而不是处理异常?,java,rx-java,couchbase,Java,Rx Java,Couchbase,我有一个使用RxJava的方法,它调用jackson对象映射器将json对象反序列化为java对象(POJO)。readValue方法抛出一个IOException,该IOException必须被处理或抛出给我的方法的调用方。我不应该在这里处理,而是让我的来电者来处理。如何在RxJava中实现这一点?通常它只需要将抛出IOException添加到我的方法签名中 这是我的密码: public Observable<T> findByIdAsync(String id) throws I
抛出IOException
添加到我的方法签名中
这是我的密码:
public Observable<T> findByIdAsync(String id) throws IOException {
return datasource
.getBucket()
.async()
.get(String.valueOf(id), RawJsonDocument.class)
.map(json -> objectMapper.readValue(json.content(), getType()));
}
public observeable findByIdAsync(字符串id)引发IOException{
返回数据源
.getBucket()
.async()
.get(String.valueOf(id),RawJsonDocument.class)
.map(json->objectMapper.readValue(json.content(),getType());
}
objectMapper.readValue(json.content(),getType())
抛出IOException
,因此必须捕获或抛出它。只需使用fromCallable
将您的readValue
方法包装到Observable
:
返回一个可观察对象,当观察者订阅它时,该可观察对象调用您指定的函数,然后发出从该函数返回的值
在
Callable
中抛出的任何Exception
都将中断流,并且订户的onError
回调将被触发(如果未在流中的某个位置处理)。如果调用方未实现onError
并且如果抛出异常,您应该得到OnErrorNotImplementedException
,如果实现了,它将在onError
块中处理。拥有一个抛出
不是我们用RxJava实现的方式。
.flatMap(json -> Observable.fromCallable(() ->
objectMapper.readValue(json.content(), getType())))