public void testOne() throws IOException {
throw new IOException();
}
public void testTwo() {
Completable.error(new Exception("Test exception"))
.subscribe(() -> {}, throwable -> {});
}
public void testThree() throws IOException {
Completable.error(new Exception("Test exception"))
.subscribe(
() -> {},
throwable -> {
throw new IOException(throwable);
}
);
}
第一种和第二种方法工作得很好。但如果我想捕获来自 Completable 的异常并重新抛出它,我就不能:
io.reactivex.exceptions.UndeliverableException: java.io.IOException: java.lang.Exception: Test exception
我不完全明白为什么我不能从 subscribe() 方法抛出异常?我该如何正确处理这种情况?
最佳答案
根据 akarnokd 的建议,我可以使用其中一种阻止方法。就我而言,我决定这样做:
public void testThree() throws IOException {
final Throwable throwable = Completable.error(new Exception("Test exception")).blockingGet();
if (throwable != null) {
throw new IOException(throwable);
}
}
关于java - RxJava2 - 订阅的消费者抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48768449/