I have a method that returns an Observable. I have this case where, in case of error I need to check error type, and for some specific error I need to return MyObject instead of error.
Example:
override fun getSomething(param: String): Observable<State> {
return someInterface.getSingleResult(param)
.flatMapObservable {
when(something) {
true -> {
Observable.just(State.ACTIVE)
}
false -> {
Observable.just(State.PAUSED)
}
}
}
.onErrorReturn {
if(it is Something) {
State.INACTIVE
} else {
// returns Throwable <- don;t know how to handle this
}
}
}
I'm not sure I got it right, but would the following work for you?
.onErrorResumeNext {
if (it is Something) {
Observable.just(State.INACTIVE)
} else {
Observable.error(it)
}
}
fun testObservable(): Observable<Int> {
return Observable.just(1, 2, 3)
.onErrorResumeNext { error: Throwable ->
if (error is IllegalArgumentException) {
Observable.just(0)
} else {
Observable.error(error)
}
}
}