Voglio fare questo:Come faccio a gestire le eccezioni nella cartina() in un 'osservabile in RxJava
Observable.just(bitmap)
.map(new Func1<Bitmap, File>() {
@Override
public File call(Bitmap photoBitmap) {
//File creation throws IOException,
//I just want it to hit the onError() inside subscribe()
File photoFile = new File(App.getAppContext().getCacheDir(), "userprofilepic_temp.jpg");
if(photoFile.isFile()) {//delete the file first if it exists otherwise the new file won't be created
photoFile.delete();
}
photoFile.createNewFile(); //saves the file in the cache dir
FileOutputStream fos = new FileOutputStream(photoFile);
photoBitmap.compress(Bitmap.CompressFormat.JPEG, 90, fos);//jpeg format
fos.close();
return photoFile;
}
})
.subscribe(//continue implementation...);
In sostanza nel metodo call()
, può generare eccezioni. Come posso far sì che l'Observer lo gestisca in onError()
. O non è questo il modo giusto di pensarci?
Si noti che in RxJava 2 operatori come 'map' consentono il lancio di eccezioni controllate dal lambda. Questo è stato davvero un difetto di progettazione in RxJava 1 perché l'errore esatto generato non poteva essere propagato in "onError" dalla mappa lambda senza essere racchiuso come 'RuntimeException'. –