【发布时间】:2018-10-05 14:17:36
【问题描述】:
Flowable.just(getSize())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.onExceptionResumeNext { Flowable.just(10) }
.onErrorResumeNext(Flowable.just(10))
.doOnError { throwable -> Logger.log("caught in doOnError") }
.subscribe({ size -> showSizeOnUi(size) },
{ throwable -> Logger.log("caught in onError") })
getSize() 函数会抛出 NullPointer 异常。
private fun getSize(): Int {
val path: String? = null
return path!!.length // attempts to call length on null string (path)
}
据我所知,如果 getSize() 抛出任何异常,则应将控制权交给 onExceptionResumeNext,然后它将返回 '10',并且该值应转到 onNext() "{ size -> showSizeOnUi(大小) }"。但在这种情况下,应用程序只会崩溃。 我可以通过任何后备机制来防止这种崩溃吗?
谢谢。
【问题讨论】:
-
这是对
just的常见误解。它需要一个已经存在的值。推荐阅读:github.com/ReactiveX/RxJava/wiki/Creating-Observables#just -
感谢您的链接。现在,我相信我有两个选择。延迟和可调用。
-
此外,在您的情况下,它似乎必须是单曲。