Observable.fromCallable()
非常适合将单个函数转换为Observable。但是,当该函数可能抛出已检查异常时,该怎么办呢?
我看到的大多数示例都使用Lambda表达式并且“只是起作用”。但是如果没有Lambda表达式,你会怎么做呢?例如,请参见这篇优秀文章中的下面一句话:
Observable.fromCallable(() -> downloadFileFromNetwork());
现在只需要一行代码!它处理了已检查异常,不再需要使用 Observable.just() 和 Observable.error() 来简单地推迟代码执行!
当我尝试实现上述 Observable,但没有使用 lambda 表达式,基于其他示例和 Android Studio 的自动完成,我得到以下内容:
Observable.fromCallable(new Func0<File>() {
@Override
public File call() {
return downloadFileFromNetwork();
}
}
但是如果downloadFileFromNetwork()
抛出一个受检异常,我必须尝试捕获它并将其包装在RuntimeException
中。一定有更好的方法!上面的lambda如何支持这个?!?!