例如,我有这样的事情:
public void saveFoodatas(List<Foodata> foodataList) {
DatabaseHelper.database.beginTransaction();
try {
for (Foodata foodata : foodataList) {
saveFoodata(foodata);
}
DatabaseHelper.database.setTransactionSuccessful();
}
finally {
DatabaseHelper.database.endTransaction();
}
}
其中
DatabaseHelper
是扩展SQLiteOpenHelper
的类,而database
是SQLiteDatabase
。在此功能中,我试图做到这一点,以便您将许多对象保存/提交到数据库,但是如果发生故障,则不要提交任何更改。
我相信它当前可以正确执行的操作(如果有错误,它将离开我认为的
try
块,并且由于没有finally
而直接进入catch
),但是我的问题是如何正确触发失败条件。我需要saveFoodata
来“引发异常”吗?如果函数在没有我进行任何尝试/捕获/抛出的情况下遇到某种故障,那也算在内吗?我该如何正确处理saveFooData()
? 最佳答案
我认为您在正确的轨道上。如果发生错误,您需要中止事务。您还需要警告用户该问题。这意味着saveFoodata()
和saveFoodatas()
应该抛出异常,以便UI代码可以向用户显示消息,