【发布时间】:2016-06-28 10:32:52
【问题描述】:
我习惯使用 SQL 数据库,我是 Realm 的新手,到目前为止,我对这个新的移动数据库的易用性印象深刻。 但是有一点我真的不明白:如何处理错误抛出?
举个简单的例子:
我想在 Realm DB 中存储一些市场股票。
每只股票都有一个“符号”作为唯一标识符:APPL 代表 Apple Inc,TSLA 代表 Tesla Motors Inc 等。
我相信将这些符号声明为主键是有意义的,因为数据库中不可能有多次相同的符号
当用户点击一个符号(在符号列表中)时,该符号将保存在 db 中。
在这个Raywenderlich tutorial 中说:“为了简化本教程中所需的代码,你将使用 try! 来调用抛出错误的 Realm 方法。在你自己的代码中,你应该真的正在使用 try and do / catch 来捕获错误并适当地处理它们。”
所以按照下面的模式:
do {
try realm.write {
realm.add(symbol)
}
}
catch let error as NSError {
print("Something went wrong: \(error.localizedDescription)")
}
到目前为止,这是有道理的。
如果用户单击数据库中已经存在的符号,我会(非常合乎逻辑地)得到一个错误:
*** Terminating app due to uncaught exception 'RLMException', reason: 'Can't set primary key property 'symbol' to existing value 'APPL'.'
问题是在运行时没有捕获到这个错误:我已经崩溃了。
我的问题不是关于如何避免这种崩溃,我当然明白,在数据库中写入任何内容之前进行简单的测试很容易避免它:)
我的问题是我们如何在 Realm 中捕捉潜在的书写错误?
我做错了吗?
【问题讨论】: