例如,我有这样的事情:

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的类,而databaseSQLiteDatabase

在此功能中,我试图做到这一点,以便您将许多对象保存/提交到数据库,但是如果发生故障,则不要提交任何更改。

我相信它当前可以正确执行的操作(如果有错误,它将离开我认为的try块,并且由于没有finally而直接进入catch),但是我的问题是如何正确触发失败条件。我需要saveFoodata来“引发异常”吗?如果函数在没有我进行任何尝试/捕获/抛出的情况下遇到某种故障,那也算在内吗?我该如何正确处理saveFooData()

最佳答案

我认为您在正确的轨道上。如果发生错误,您需要中止事务。您还需要警告用户该问题。这意味着saveFoodata()saveFoodatas()应该抛出异常,以便UI代码可以向用户显示消息,

10-07 22:29