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