Rx如何根据错误类型返回Throwable或Object



我有一个返回Observable的方法。在这种情况下,如果出现错误,我需要检查错误类型,对于某些特定的错误,我必须返回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
} 
} 
}

我不确定我做对了,但以下对你有用吗?

.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)
}
}
}

最新更新