如何在android中处理rxjava链中的错误?
我有一个项目列表,例如整数列表,如果任何整数为空,我需要使用错误并继续下一个项目 比如说如何在android中处理rxjava链中的错误?,android,rx-java,rx-kotlin,rx-kotlin2,Android,Rx Java,Rx Kotlin,Rx Kotlin2,我有一个项目列表,例如整数列表,如果任何整数为空,我需要使用错误并继续下一个项目 比如说 Observable.fromIterable(listOf(1, 2, 3, null, 5)) .map { doSomeProcess(it) } .onErrorReturnItem(-1) .subscribeBy(
Observable.fromIterable(listOf(1, 2, 3, null, 5))
.map {
doSomeProcess(it)
}
.onErrorReturnItem(-1)
.subscribeBy(
onNext = {
print(it)
},
onError = {
},
onComplete = {
})
我期待这样的输出
1
2
3
-1
5
但我的问题是在
-1
之后,它没有继续执行项目5
,它就停在那里了,有人能帮我解决这个问题吗?在Rx onError中,这是一个终止事件。所以,如果您不想中断流,而只是处理错误并继续接收其他数据,您可以使用
Observable.fromIterable(列表(1,2,3,null,5))
.地图{
doSomeProcess(it)
}
.订阅人(
onNext={
什么时候{
it.isOnNext->{
val结果=it.value
如果(结果==-1){
//在这里处理错误
}
}
//it.isOnComplete->{
//}
//it.ison错误->{
//}
}
}
)
私有进程(i:Int?):通知=
如果(i==null)
//Notification.createOnError(IllegalArgumentException())
通知.createOnNext(-1)
其他的
通知.createOnNext(i)
你能举个例子吗?
Observable.fromIterable(listOf(1, 2, 3, null, 5))
.map {
doSomeProcess(it)
}
.subscribeBy(
onNext = {
when {
it.isOnNext -> {
val result = it.value
if(result == -1){
//handle error here
}
}
//it.isOnComplete -> {
//}
//it.isOnError -> {
//}
}
}
)
private fun doSomeProcess(i: Int?): Notification<Int> =
if (i == null)
//Notification.createOnError(IllegalArgumentException())
Notification.createOnNext(-1)
else
Notification.createOnNext(i)