Lorsque vous utilisez la carte vs flatMap dans RxJava?

De le faire lorsque vous utilisez la carte vs flatMap dans RxJava?

Dire par exemple, nous voulons carte Fichiers contenant JSON dans les Chaînes qui contiennent le JSON--

À l'aide de la carte, nous avons affaire à l'Exception d'une certaine manière. Mais comment?:

Observable.from(jsonFile).map(new Func1<File, String>() {
    @Override public String call(File file) {
        try {
            return new Gson().toJson(new FileReader(file), Object.class);
        } catch (FileNotFoundException e) {
            //So Exception. What to do ?
        }
        return null; //Not good :(
    }
});

À l'aide de flatMap, c'est beaucoup plus détaillé, mais nous pouvons en avant le problème de la chaîne de phénomènes Observables et gérer l'erreur si nous choisissons quelque part d'autre et même réessayer:

Observable.from(jsonFile).flatMap(new Func1<File, Observable<String>>() {
    @Override public Observable<String> call(final File file) {
        return Observable.create(new Observable.OnSubscribe<String>() {
            @Override public void call(Subscriber<? super String> subscriber) {
                try {
                    String json = new Gson().toJson(new FileReader(file), Object.class);

                    subscriber.onNext(json);
                    subscriber.onCompleted();
                } catch (FileNotFoundException e) {
                    subscriber.onError(e);
                }
            }
        });
    }
});

J'aime la simplicité de la carte, mais la gestion des erreurs de flatmap (pas le niveau de verbosité). Je n'ai pas vu de meilleures pratiques à ce sujet flottant autour et je suis curieux de voir comment ce est utilisé dans la pratique.