如何在没有subscribe()的情况下处理BlockingObservable中的错误?

时间:2016-08-25 01:54:27

标签: android rx-java rx-android

出于各种原因,我必须像这样阻止observable

Foo foo = fooBarNetworkRequestObservable()
   .toBlocking()
   .single();

return foo;

但我现在如何处理错误?是没有订阅是可能的(新的Subscriber .. onError()?我尝试将代码包装在try-catch中但是编译器抱怨IOException永远不会在相应的try-catch块中抛出。任何解决方案?谢谢

1 个答案:

答案 0 :(得分:2)

你正在阻挡世界,所以你需要尝试捕捉。由于API无法抛出已检查的异常,因此我们将它们包装到RuntimeException中:

try {
    source.toBlocking.single();
} catch (RuntimeException ex) {
    if (ex.getCause() instanceof IOException) {
        // handle IOException
    } else {
        throw ex; // something other happened
    }
}