Observable.fromCallable()
is great for converting a single function into an Observable. But how do you handle checked exceptions that might be thrown by the functio
You could also do this to return checked exceptions:
return Observable.fromCallable(() -> {
sharedPreferences.edit()
.putString(DB_COMPANY, LoganSquare.serialize(
CompanyDBTransformation.get(user.getCompany())
))
.apply();
return user;
}).onErrorResumeNext(
throwable -> Observable.error(new CompanySerializationException(throwable))
);
So here I'm serializing taking the IOException risk, and I'm giving back a more descriptive description.
Rather than using a Func0
with Observable.fromCallable()
, use Callable
. For example:
Observable.fromCallable(new Callable<File>() {
@Override
public File call() throws Exception {
return downloadFileFromNetwork();
}
}
Since Callable
's method call()
throws Exception
, you don't have to wrap your function in a try-catch! This must be what the lambda is using under the hood.