在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();
}
感谢。
答案 0 :(得分:4)
查看documentation:SQLException
扩展RuntimeException
,您不需要throws
条款。
编辑:请注意,这仅适用于Android。在Java SE中,SQLException
并非来自RuntimeException
。
答案 1 :(得分:3)
如果方法没有抛出异常,或者抛出RuntimeException,则不必捕获它。
由于该方法抛出RuntimeException,因此您不需要捕获它(就像NullPointerException或ArrayIndexOutOfBounds异常一样)。
但是,异常会导致程序崩溃。你仍然可以捕获异常,只需使用try catch。