首页 > 解决方案 > 在 CompositeException 中抛出捕获的异常结果

问题描述

在下面的代码中,当不再从 Sqlite 数据库中读取记录时,我得到一个 EmptyResultSetException。这是意料之中的。此异常在 doOnError 中捕获。如果我抛出此异常,订阅者的 onError 处理程序中捕获的异常将变为 CompositeException。CompositeException 包含一个异常列表,在这种情况下,它只包含一个恰好是 EmptyResultSetException 的异常。最初,在更改我的代码之前,EmptyResultSetException 被直接发送到订阅者的 onError 处理程序。现在它被放入一个 CompositeException 中。这可能是什么原因造成的?

val msgToSendPublisher = BehaviorSubject.createDefault(MessageToSend())

msgToSendPublisher
    .flatMap { _ ->
        App.context.repository.getMessageToSend().flatMapObservable { messageToSend -> Observable.just(messageToSend) }
    }
    .doOnError { error ->

        throw error
    }
    .doOnNext {
        msgToSendPublisher.onNext(it)
    }
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe(
        { messageToSend ->

        },
        { ex ->
            if (ex !is EmptyResultSetException) {

            }
        },
        {
        }
    )

标签: androidrx-java2android-room

解决方案


推荐阅读