如何使用rxjava1.x向调用方抛出异常,而不是处理异常?

如何使用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

我有一个使用RxJava的方法,它调用jackson对象映射器将json对象反序列化为java对象(POJO)。readValue方法抛出一个IOException,该IOException必须被处理或抛出给我的方法的调用方。我不应该在这里处理,而是让我的来电者来处理。如何在RxJava中实现这一点?通常它只需要将
抛出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())))