【问题标题】:How to handle errors in rxjava chain in android?如何处理android中rxjava链中的错误?
【发布时间】:2019-06-19 04:29:48
【问题描述】:

我有一个项目列表,例如整数列表,如果任何整数为空,我需要处理错误并继续下一个项目

例如

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,它停在那里,谁能帮我解决这个问题?

【问题讨论】:

    标签: android rx-java rx-kotlin rx-kotlin2


    【解决方案1】:

    在 Rx 中,onError 是一个终止事件。因此,如果您不想中断流,而只是处理错误并继续接收其他数据,则可以使用Notification

     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)
    

    【讨论】:

    • 你能举个例子吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-27
    • 2015-03-06
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    相关资源
    最近更新 更多