这段代码有什么问题?它没有捕捉到由 insertChild()
方法。
childDbOps.open();
try {
childDbOps.insertChild(child);
} catch (SQLiteException exception) {
Log.i("error la inserare child", "on the next line");
exception.printStackTrace();
} finally {
childDbOps.close();
}
错误的是。
ERROR/Database(320): android.database.sqlite.SQLiteConstraintException: error code 19:
constraint failed at com.android.dataLayer.DbAdapter.insertChild(DbAdapter.java:169)
at com.android.activities.ChildInsertActivity.onClick(ChildInsertActivity.java:203)
at android.view.View.performClick(View.java:2344)
这是android sqlite。这一行是在调用插入方法的时候。
SQLiteDatabase.insert()方法用于处理数据库写入的情况,如果写入失败,不需要解开堆栈。如果你想在插入数据库时捕获异常,可以使用 SQLite.insertOrThrow() 方法,它将抛出一个异常,然后你可以抓住并处理这个异常。它将抛出一个异常,然后你可以捕捉并处理这个异常。
你只捕捉类型为 SQLiteException
. 如果 insertChild
方法抛出任何其他异常,它不会被捕获。
try {
childDbOps.insertChild(child);
}
catch(SQLiteException exception) {
Log.i("error la inserare child", "on the next line");
exception.printStackTrace();
}
catch(AnotherException exception) {
//handle it
}
//Catch them all here
catch(Exception exception) {
//handle it: must handle it, don't just swallow it.
}
finally {
childDbOps.close();
}
@bogdan 除了这个地方,你还有没有在其他地方调用insertChild(child);你有没有在try块中设置一个跟踪,以了解它是否来到这个块,并打印出下面的跟踪。
try { Log.i(" comes here"); childDbOps.insertChild(child); }。
让我知道。