我有一个使用RxJava的方法,它调用jackson对象映射器将json对象反序列化为java对象(POJO)。 readValue方法抛出一个IOException,必须处理或抛出给我的方法的调用者。我不应该在这里处理它,而是让我的呼叫者处理它。我怎么能在RxJava中做到这一点?通常,只需要在我的方法签名中添加throws 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()));
}
objectMapper.readValue(json.content(), getType())
抛出IOException
因此必须抓住或抛出它。
答案 0 :(得分:3)
使用Observable
fromCallable
方法打包到.flatMap(json -> Observable.fromCallable(() ->
objectMapper.readValue(json.content(), getType())))
返回一个Observable,当观察者订阅它时,调用你指定的函数,然后发出从该函数返回的值。
Exception
Callable
中引发的任何Subscriber's
都会中断流,并且会触发onError
{{1}}回调(如果未在流中的某处处理)。