Observable.fromCallable()
è ideale per convertire una singola funzione in Osservabile. Ma come gestisci le eccezioni controllate che potrebbero essere generate dalla funzione?Come utilizzare Observable.fromCallable() con un'eccezione controllata?
La maggior parte degli esempi che ho visto utilizzano lambda e "funziona solo". Ma come lo faresti senza lambda? Ad esempio, vedere la citazione sotto da this great article:
Observable.fromCallable(() -> downloadFileFromNetwork());
Si tratta di un one-liner ora! Si occupa di eccezioni controllate, non più bizzarre Observable.just() e Observable.error() per cose così semplici come il rinvio dell'esecuzione del codice!
Quando si tenta di implementare osservabile sopra senza un'espressione lambda, sulla base di altri esempi che ho visto, e come Android Studio auto-completa, ottengo il seguente:
Observable.fromCallable(new Func0<File>() {
@Override
public File call() {
return downloadFileFromNetwork();
}
}
Ma se downloadFileFromNetwork()
getta un'eccezione controllata, devo provare a prenderlo e avvolgerlo in un RuntimeException
. Deve esserci un modo migliore! In che modo la suddetta lambda supporta questo?!?!
Utilizzare java.util.concurrent.Callable visto nei documenti http://reactivex.io/RxJava/javadoc/rx/Observable.html#fromCallable(java.util.concurrent.Callable) – flakes