为什么我在Android上使用db.exec()时不需要捕获SQLExecption?

时间:2014-06-10 15:28:57

标签: java android sqlite sqlexception

在Android上使用catch时,为什么我不需要SQLExecption db.exec()

db是SQLiteDatabase对象。

当我编写下面的代码时,Eclipse不会提醒我捕获SQLException并且代码可以正常运行。但是,该方法应该根据eclipse提供的文档抛出SQLException

我认为程序员应该在java中创建方法时捕获每个exception或添加throws语句。

以下是我的代码。

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    SQLiteDatabase db=openOrCreateDatabase("keys.db",Context.MODE_PRIVATE,null);
    String sql="CREATE TABLE `mykey` (_id INTEGER PRIMARY KEY AUTOINCREMENT, "+
            "public_key VARCHAR, private_key VARCHAR)";
    db.execSQL(sql);
    db.close();
}

感谢。

2 个答案:

答案 0 :(得分:4)

查看documentationSQLException扩展RuntimeException,您不需要throws条款。

编辑:请注意,这仅适用于Android。在Java SE中,SQLException并非来自RuntimeException

答案 1 :(得分:3)

如果方法没有抛出异常,或者抛出RuntimeException,则不必捕获它。

由于该方法抛出RuntimeException,因此您不需要捕获它(就像NullPointerException或ArrayIndexOutOfBounds异常一样)。

但是,异常会导致程序崩溃。你仍然可以捕获异常,只需使用try catch。