OnErrorThrowable не найден в rxjava 2

Я обновляю rxjava 1 до rxjava 2. В rxjava 1 есть OnErrorThrowable, но его нет в rxjava 2. Что я могу сделать в следующем коде, чтобы заменить OnErrorThrowable?

static Observable<String> sampleObservable() {
    return Observable.defer(new Callable<ObservableSource<String>>() {
        @Override
        public ObservableSource<String> call() throws Exception {
            try {
                // Do some long running operation
                Thread.sleep(TimeUnit.SECONDS.toMillis(5));
            } catch (InterruptedException e) {
                throw OnErrorThrowable.from(e);
            }
            Log.d(TAG, "The sleep is over, now produce something");
            return Observable.just("one", "two", "three", "four", "five");
        }
    });
}

person s-hunter    schedule 12.01.2017    source источник


Ответы (2)


В 2.x вам не нужно оборачивать исключения, так как все функциональные типы объявляют throws Exception:

static Observable<String> sampleObservable() {
return Observable.defer(new Callable<ObservableSource<String>>() {
    @Override
    public ObservableSource<String> call() throws Exception {
        Thread.sleep(TimeUnit.SECONDS.toMillis(5));
        Log.d(TAG, "The sleep is over, now produce something");
        return Observable.just("one", "two", "three", "four", "five");
    }
});

}

person akarnokd    schedule 12.01.2017
comment
Эй, Дэвид, а как насчет таких случаев, как onErrorReturn(), когда мы раньше повторно выдавали ошибку, используя OnErrorThrowable.from()? - person Saket; 16.05.2017

Вы можете вернуть Observable.error(e); вместо добавления блока catch.

person Alexander Perfilyev    schedule 12.01.2017