为什么SQLException没有捕获SQLiteExcpetion?

时间:2011-11-16 22:41:55

标签: java android exception

我的一个Android应用程序中有一些代码可以捕获SQLException,但我最近发现它没有捕获SQLiteException。显然,SQLiteException是SQLException的子代,所以它为什么不被捕获?这是我正在使用的一些代码。

try {
    ... // something here that will throw an SQLiteException
} catch (SQLException e) {
    e.printStackTrace();
}

我的假设是否正确,我应该捕获SQLiteException?

如果它很重要,我使用的代码不在Activity的内部,而是在扩展Application类的类中。

作为旁注,我确实添加了一个额外的catch( Exception e ){},看看它是否有效,并确实按预期工作。

2 个答案:

答案 0 :(得分:16)

有两种类型的SQLException:

android.database.SQLException
java.sql.SQLException

确保您使用第一个而不是第二个。

答案 1 :(得分:3)

  

我的假设是否正确,我应该捕获SQLiteException?

您是在谈论java.sql.SQLException还是android.database.SQLException

SQLiteException延伸android.database.SQLException。检查你的进口。