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()方法中抛出异常?我该如何正确处理这种情况?
答案 0 :(得分:0)
根据akarnokd的建议,我可以使用阻塞方法之一。就我而言,我决定这样做:
public void testThree() throws IOException {
final Throwable throwable = Completable.error(new Exception("Test exception")).blockingGet();
if (throwable != null) {
throw new IOException(throwable);
}
}