我正在尝试执行以下代码
testRepository
.exists(data)
.flatMap(x -> {
if (x==null) {
return Observable.error(new Exception("Error"));
}
return Observable.just(x);
})
.flatMap(x -> testRepository.create(x))
.flatMap(x -> {
return Observable.just(x);
});
当第一个 map 中没有抛出错误时,此代码有效。但如果抛出错误,它就会挂起。 这里出了什么问题?
谢谢
最佳答案
您没有正确声明错误,您不应该通过 flatMap 执行显式转换为错误可观察量,因为在积极状态下,您为每个项目创建新的可观察量并将它们组合起来。
您可以只使用
.doOnNext(x -> {
if (x == null) throw new IllegalStateException("null item error");
})
此异常会中断流,并会在订阅的 onError
回调中得到正确处理。
最后一条指令也没有意义,因为您将每个元素转换为单个可观察项,然后将它们组合回类似的流。
Ps:它还需要在某个地方被称为.subscribe
,但我认为这是有意义的。
关于java - 如何处理 RxJava 链中抛出的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41615560/