java - 如何在SQLite/Java/Android中正确处理此类错误?

标签 java android sqlite error-handling

例如,我有这样的事情:

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代码可以向用户显示消息,

关于java - 如何在SQLite/Java/Android中正确处理此类错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39706973/

相关文章:

java - 在水平 LinearLayout 上膨胀多个 TextView

java - 使用 JAXB 解码 xml 文件

java - @Asynchronous 是否有超时

java - 返回错误 int 值的变量

javascript - 如何在 WebView 中加载 Javascript

python - 是否有任何 sqlalchemy 列表插值语法适用于 sqlite (用于测试)和 mysql (用于生产)?

java - 何时使用 EventListenerList 而不是一般的监听器集合

java - 将 String ArrayList 循环到 EditText 数组中的 setText

sql - 如何理解 SQLite `EXPLAIN QUERY PLAN` 结果?

c# - SQLite 错误 : Failed to find or load the registered .Net Framework 数据提供程序