Rxjava: Transform exception

Created on 7 Sep 2014  路  4Comments  路  Source: ReactiveX/RxJava

My case: on deepest layer of app i create Observable. On upper layers i transform given observable with some operators, and also i need to wrap error there.
How can i achieve that, not using another Observable.create() wrap?

Most helpful comment

You can use onErrorResumeNext, such as myObservable.onErrorResumeNext(throwable -> Observable.error(new RepositoryException(throwable))

All 4 comments

Could you provide some codes to clarify your question?

sure.

i create observable for my local datastore in android:

 Observable.create((Subscriber<? super T> subscriber) -> {
      try {
        noSQL.using(type).bucketId(bucket).entityId(id).retrieve(noSQLEntities -> {
          if (noSQLEntities.size() == 0) {
            subscriber.onError(
                new DataNotFoundException("Item not found in local NoSQL Storage: id = " + id));
          } else {
            subscriber.onNext(noSQLEntities.get(0).getData());
            subscriber.onCompleted();
          }
        });
      } catch (Throwable e) {
        subscriber.onError(e);
      }
    })

on upper level i need something like this

myObservable.mapException(throwable -> new RepositoryException(throwable))

I can transform emitted items on any point, why i cant do it for exception? Or i can?

You can use onErrorResumeNext, such as myObservable.onErrorResumeNext(throwable -> Observable.error(new RepositoryException(throwable))

@zsxwing Thanks! It's exactly what i need.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

yubaokang picture yubaokang  路  3Comments

ZakTaccardi picture ZakTaccardi  路  3Comments

philleonard picture philleonard  路  3Comments

hoc081098 picture hoc081098  路  3Comments

dlew picture dlew  路  4Comments