引发捕获的异常会导致CompositeException

时间:2019-07-12 10:25:37

标签: android rx-java2 android-room

在以下代码中,当不再从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) {

            }
        },
        {
        }
    )

0 个答案:

没有答案
相关问题