2017-01-12 3 views
1

Ich rxjava 1 auf rxjava 2 upgraden. Es gibt OnErrorThrowable in rxjava 1, aber nicht in rxjava 2. Was kann ich im folgenden Code, um die OnErrorThrowable zu ersetzen?OnErrorThrowable nicht gefunden in 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"); 
     } 
    }); 
} 

Antwort

2

In 2.x Sie müssen keine Ausnahmen wickeln, da alle Funktionstypen throws Exception erklären:

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

Hey David, was über Fälle wie 'onErrorReturn()', wo wir verwendet, um zuvor den Fehler mit 'OnErrorThrowable.from()'? – Saket

2

Sie können Observable.error(e); zurückgeben, anstatt Ihren Catch-Block einzuwerfen.