出于各种原因,我必须像这样阻止observable
Foo foo = fooBarNetworkRequestObservable()
.toBlocking()
.single();
return foo;
但我现在如何处理错误?是没有订阅是可能的(新的Subscriber .. onError()?我尝试将代码包装在try-catch中但是编译器抱怨IOException永远不会在相应的try-catch块中抛出。任何解决方案?谢谢
答案 0 :(得分:2)
你正在阻挡世界,所以你需要尝试捕捉。由于API无法抛出已检查的异常,因此我们将它们包装到RuntimeException
中:
try {
source.toBlocking.single();
} catch (RuntimeException ex) {
if (ex.getCause() instanceof IOException) {
// handle IOException
} else {
throw ex; // something other happened
}
}