我的问题
RX Java错误处理是否会自动捕获Realm处理其功能期间发生的错误?
RX Java错误处理是否更好,是否应该替换try-catch异常错误处理?
基于下面的实现,我应该删除Realm实现的Try-Catch错误处理,而仅依靠RXJava错误处理吗?
RxJava实现
override fun getData(context: Context, id: String) {
getDataObservable(context, id)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(object : Observer<String>
{
override fun onSubscribe(d: Disposable)
{
}
override fun onNext(value: String)
{
}
override fun onError(e: Throwable)
{
// RXJava Error Handling here
}
override fun onComplete()
{
}
})
}
fun getDataObservable(context: Context, id: String): Observable<String>
{
return Observable.defer(object : Callable<ObservableSource<out String>>
{
@Throws(Exception::class)
override fun call(): Observable<String>
{
return Observable.just(realmModel.getDataRealm(context,id))
}
})
}
领域实施
override fun getDataRealm(context: Context, id: String): String {
var realm: Realm? = null
var storeData:String? = null;
try {
Realm.init(context)
val config = RealmConfiguration.Builder()
.name("database.realm")
.build()
realm = Realm.getInstance(config)
realm!!.executeTransaction {
val getData = realm.where(database::class.java).equalTo("dataID",id).findAll()
storeData = getData.dataName
}
realm.close()
return storeData
}catch(e:Exception) {
realm?.close() // Realm Try-Catch Error Handling
}finally {
realm?.close()
}
}
答案 0 :(得分:0)
我继续继续上面的实现,并删除了Realm实现的try-catch
,我故意触发了一个错误,似乎RXJava可以在onError
捕获来自Realm的错误
我个人会得出以下结论:
是的,RX Java错误处理将自动捕获Realm处理其功能期间发生的错误。
到目前为止,对于我来说,RX Java可以处理catch错误,因此为了我自己的方便,我会选择RX Java错误处理,而不是Realm try-catch异常错误处理。
由于我使用了RX Java错误处理,因此我认为不再需要Realm try-catch错误处理。