private Object executeObservable(HystrixInvokable invokable, ExecutionType executionType, final MetaHolder metaHolder) { return mapObservable(((Observable) CommandExecutor.execute(invokable, executionType, metaHolder)) .onErrorResumeNext(new Func1<Throwable, Observable>() { @Override public Observable call(Throwable throwable) { if (throwable instanceof HystrixBadRequestException) { return Observable.error(throwable.getCause()); } else if (throwable instanceof HystrixRuntimeException) { HystrixRuntimeException hystrixRuntimeException = (HystrixRuntimeException) throwable; return Observable.error(hystrixRuntimeExceptionToThrowable(metaHolder, hystrixRuntimeException)); } return Observable.error(throwable); } }), metaHolder); }
}).onErrorResumeNext(discard());
/** *{@inheritDoc}. */ @Override protected Observable construct() { Observable result; try { Observable observable = toObservable(commandActions.getCommandAction().execute(executionType)); result = observable .onErrorResumeNext(new Func1<Throwable, Observable>() { @Override public Observable call(Throwable throwable) { if (isIgnorable(throwable)) { return Observable.error(new HystrixBadRequestException(throwable.getMessage(), throwable)); } return Observable.error(throwable); } }); flushCache(); } catch (CommandActionExecutionException throwable) { Throwable cause = throwable.getCause(); if (isIgnorable(cause)) { throw new HystrixBadRequestException(cause.getMessage(), cause); } throw throwable; } return result; }
case MODE_CACHE: itemObservable = mRestService.cachedItemRx(itemId) .onErrorResumeNext(mRestService.itemRx(itemId)); break;
.onErrorResumeNext(new Func1<Throwable, Observable<Void>>() { @Override public Observable<Void> call(Throwable throwable) { .onErrorResumeNext(new Func1<Throwable, Observable<Void>>() { @Override public Observable<Void> call(Throwable throwable) {
.doOnNext(markFallbackEmit) .doOnCompleted(markFallbackCompleted) .onErrorResumeNext(handleFallbackError) .doOnTerminate(singleSemaphoreRelease) .doOnUnsubscribe(singleSemaphoreRelease);
/** * Don't modify any values in the stream but do handle the error * and replace it with "default-value". */ public Observable<String> handleError(Observable<String> data) { return data.onErrorResumeNext(Observable.just("default-value")); }
.onErrorResumeNext(handleFallback) .doOnEach(setRequestContext);
/** * ClassificationPresenter * * @return */ public Observable<VideoRes> queryClassification() { return mService.getHomePage() .map(new ServerResultFunc<VideoRes>()) .onErrorResumeNext(new HttpResultFunc<VideoRes>()) .subscribeOn(Schedulers.io()) .unsubscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); }
.onErrorResumeNext(Observable.just("5) data")) .subscribe(System.out::println, t -> System.out.println("5) Error: " + t)); .onErrorResumeNext(t -> { if (t instanceof IllegalStateException) { return Observable.error(t); .onErrorResumeNext(t -> { if (t instanceof IllegalStateException) { return Observable.error(t);
.onErrorResumeNext(e -> Observable.just("Fallback Data")) .subscribe(System.out::println); }).onErrorResumeNext(throwable -> { return Observable.just("fallback value"); }).subscribe(System.out::println); }).onErrorResumeNext(Observable.just("fallback value")) .subscribe(System.out::println);
/** * Retrieve list of venues. Behaviour: * 1. Return cached venues (empty list if none is cached) * 2. Return API venues (if different to cached ones) * 3. Save new venues from API in cache * 5. If an error happens and cache is not empty, returns venues from cache. */ public Observable<List<Venue>> getVenues() { String auth = RibotService.Util.buildAuthorization(mPreferencesHelper.getAccessToken()); return mRibotService.getVenues(auth) .doOnNext(new Action1<List<Venue>>() { @Override public void call(List<Venue> venues) { mPreferencesHelper.putVenues(venues); } }) .onErrorResumeNext(new Func1<Throwable, Observable<? extends List<Venue>>>() { @Override public Observable<? extends List<Venue>> call(Throwable throwable) { return getVenuesRecoveryObservable(throwable); } }) .startWith(mPreferencesHelper.getVenuesAsObservable()) .distinct(); }
.onErrorResumeNext(t -> { System.out.println(" ***** complete group: " + groupedObservable.getKey());
@Override public Observable<Row> queryRows(String sql, Object... params) { return PgConnection.this.queryRows(sql, params) .onErrorResumeNext(this::doRollback); } @Override
@Override public Observable<ResultSet> querySet(String sql, Object... params) { return PgConnection.this.querySet(sql, params) .onErrorResumeNext(this::doRollback); } <T> Observable<T> doRollback(Throwable t) {
public static <R> R execute(Observable<R> primary, Observable<R> secondary) { return primary .onErrorResumeNext(secondary) .toBlocking() .single(); }
public Observable<T> toObservable() { Observable<T> rootObservable = null; for (final HystrixObservableCommand<T> command : hystrixCommands) { Observable<T> observable = command.toObservable(); rootObservable = rootObservable == null ? observable : rootObservable.onErrorResumeNext(observable); } return rootObservable; }
@Override public Observable<Tuple2<LoaderType, BucketConfig>> call(NetworkAddress seedHost) { Observable<Tuple2<LoaderType, BucketConfig>> node = loaderChain.get(0) .loadConfig(seedHost, bucket, username, password); for (int i = 1; i < loaderChain.size(); i++) { node = node.onErrorResumeNext(loaderChain.get(i) .loadConfig(seedHost, bucket, username, password)); } return node; } })
@Override public Observable<Server> resolve() { return primary.resolve() .onErrorResumeNext(fallback.resolve()); } }
@Override public Observable<T> call(Observable<T> upstream) { return sqlConnection.rxSetAutoCommit(false).toCompletable() .andThen(upstream) .concatWith(sqlConnection.rxCommit().toCompletable().toObservable()) .onErrorResumeNext(throwable -> { return sqlConnection.rxRollback().toCompletable().onErrorComplete() .andThen(sqlConnection.rxSetAutoCommit(true).toCompletable().onErrorComplete()) .andThen(Observable.error(throwable)); }).concatWith(sqlConnection.rxSetAutoCommit(true).toCompletable().toObservable()); } }