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?
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.
Most helpful comment
You can use
onErrorResumeNext, such asmyObservable.onErrorResumeNext(throwable -> Observable.error(new RepositoryException(throwable))