#android #kotlin #rx-java2 #rx-kotlin
#Android #kotlin #rx-java2 #rx-kotlin
Вопрос:
У меня есть метод, который возвращает наблюдаемое. У меня есть такой случай, когда в случае ошибки мне нужно проверить тип ошибки, и для какой-то конкретной ошибки мне нужно вернуть MyObject вместо error .
Пример:
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
}
}
}
Ответ №1:
Я не уверен, что правильно понял, но сработает ли для вас следующее?
.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)
}
}
}
Комментарии:
1. мой забавный возвращаемый тип — Observable<State> , поэтому, если я попытаюсь вернуть Observable.error(it), у меня будет ошибка компиляции
2. Вы уверены, что используете
onErrorResumeNext
, а неonErrorReturn
используете? В моем случае следующее компилируется и работает должным образом.