2017-01-12 6 views
1

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

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"); 
     } 
    }); 
} 

ответ

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"); 
    } 
}); 

}

+0

Эй Дэвид, что о таких случаях, как 'onErrorReturn()', где мы используется для ранее повторного выброса ошибки с помощью 'OnErrorThrowable.from()'? – Saket

2

Вы можете вернуть Observable.error(e); вместо того, чтобы бросать в свой улов блока.