Android SQLiteExceptions不由ORMLite处理?

Android SQLiteExceptions不由ORMLite处理?,android,sqlite,ormlite,Android,Sqlite,Ormlite,我特别小心地在我的应用程序中正确处理来自ORMLite的所有SQLException,结果发现ORMLite android的sqlite下面抛出了运行时异常,就像他们不在乎一样 有没有办法避免处理Android的SQLiteExceptions和OrmlitesSQLExceptions 下面是一个方法的堆栈跟踪示例,该方法捕获SQLExceptions,但显然不是SQLiteExceptions E/AndroidRuntime( 7308): Caused by: android.data

我特别小心地在我的应用程序中正确处理来自ORMLite的所有SQLException,结果发现ORMLite android的sqlite下面抛出了运行时异常,就像他们不在乎一样

有没有办法避免处理Android的SQLiteExceptions和OrmlitesSQLExceptions

下面是一个方法的堆栈跟踪示例,该方法捕获SQLExceptions,但显然不是SQLiteExceptions

E/AndroidRuntime( 7308): Caused by: android.database.sqlite.SQLiteException: unable to open database file E/AndroidRuntime( 7308): at android.database.sqlite.SQLiteDatabase.dbopen(Native Method) E/AndroidRuntime( 7308): at android.database.sqlite.SQLiteDatabase.(SQLiteDatabase.java:1821) E/AndroidRuntime( 7308): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:817) E/AndroidRuntime( 7308): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:851) E/AndroidRuntime( 7308): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:844) E/AndroidRuntime( 7308): at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:544) E/AndroidRuntime( 7308): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203) E/AndroidRuntime( 7308): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:98) E/AndroidRuntime( 7308): at com.j256.ormlite.android.AndroidConnectionSource.getReadWriteConnection(AndroidConnectionSource.java:60) E/AndroidRuntime( 7308): at com.j256.ormlite.android.AndroidConnectionSource.getReadOnlyConnection(AndroidConnectionSource.java:50) E/AndroidRuntime( 7308): at com.j256.ormlite.stmt.StatementExecutor.buildIterator(StatementExecutor.java:189) E/AndroidRuntime( 7308): at com.j256.ormlite.stmt.StatementExecutor.query(StatementExecutor.java:153) E/AndroidRuntime( 7308): at com.j256.ormlite.dao.BaseDaoImpl.query(BaseDaoImpl.java:245) E/AndroidRuntime( 7308): at com.j256.ormlite.stmt.QueryBuilder.query(QueryBuilder.java:250) E/AndroidRuntime( 7308): at au.com.ninthavenue.android.notes.application.TagsEM.getRecentTags(TagsEM.java:229) E/AndroidRuntime( 7308): at au.com.ninthavenue.android.notes.activities.EditNote.loadTags(EditNote.java:257) E/AndroidRuntime( 7308): at au.com.ninthavenue.android.notes.activities.EditNote.onCreate(EditNote.java:119) E/AndroidRuntime(7308):原因:android.database.sqlite.SQLiteException:无法打开数据库文件 E/AndroidRuntime(7308):位于android.database.sqlite.SQLiteDatabase.dbopen(本机方法) E/AndroidRuntime(7308):位于android.database.sqlite.SQLiteDatabase(SQLiteDatabase.java:1821) E/AndroidRuntime(7308):位于android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:817) E/AndroidRuntime(7308):位于android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:851) E/AndroidRuntime(7308):位于android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:844) E/AndroidRuntime(7308):位于android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:544) E/AndroidRuntime(7308):位于android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203) E/AndroidRuntime(7308):位于android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:98) E/AndroidRuntime(7308):位于com.j256.ormlite.android.AndroidConnectionSource.getReadWriteConnection(AndroidConnectionSource.java:60) E/AndroidRuntime(7308):位于com.j256.ormlite.android.AndroidConnectionSource.getReadOnlyConnection(AndroidConnectionSource.java:50) E/AndroidRuntime(7308):位于com.j256.ormlite.stmt.StatementExecutor.buildIterator(StatementExecutor.java:189) E/AndroidRuntime(7308):位于com.j256.ormlite.stmt.StatementExecutor.query(StatementExecutor.java:153) E/AndroidRuntime(7308):位于com.j256.ormlite.dao.BaseDaoImpl.query(BaseDaoImpl.java:245) E/AndroidRuntime(7308):位于com.j256.ormlite.stmt.QueryBuilder.query(QueryBuilder.java:250) E/AndroidRuntime(7308):位于au.com.nintavenue.android.notes.application.TagsEM.getRecentTags(TagsEM.java:229) E/AndroidRuntime(7308):位于au.com.ninthavenue.android.notes.activities.EditNote.loadTags(EditNote.java:257)
E/AndroidRuntime(7308):在au.com.ninthavenue.android.notes.activities.EditNote.onCreate(EditNote.java:119)我不确定在捕获多个异常的正确方法方面,这里的正确答案是什么,但我认为这是一个错误。在大多数地方(显然不是所有地方),ORMLite试图将Android调用包装起来,以捕获并重新抛出这些异常,并将其作为
java.sql.SQLException
s。我已将签入trunk的AndroidConnectionSource中的代码更改为:

SQLiteDatabase db;
try {
    db = helper.getWritableDatabase();
} catch (android.database.SQLException e) {
    throw SqlExceptionUtil.create("Unable to get writable database", e);
}
connection = new AndroidDatabaseConnection(db, true);

我已经找到了追踪器,并检查了对行李箱的修复。4点34分。如果您发现其他地方有问题,请告诉我,或者Microsoft没有正确包装这些异常。

谢谢。你知道你什么时候会发布那个版本吗?我最近刚刚推出了一个版本,我通常会在下一个版本发布之前等待一段时间。从ORMLite网站找到我,我会给你一个自定义版本。我的回答对你有帮助吗?如果是,请接受。谢谢 E/AndroidRuntime( 7308): Caused by: android.database.sqlite.SQLiteException: unable to open database file E/AndroidRuntime( 7308): at android.database.sqlite.SQLiteDatabase.dbopen(Native Method) E/AndroidRuntime( 7308): at android.database.sqlite.SQLiteDatabase.(SQLiteDatabase.java:1821) E/AndroidRuntime( 7308): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:817) E/AndroidRuntime( 7308): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:851) E/AndroidRuntime( 7308): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:844) E/AndroidRuntime( 7308): at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:544) E/AndroidRuntime( 7308): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203) E/AndroidRuntime( 7308): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:98) E/AndroidRuntime( 7308): at com.j256.ormlite.android.AndroidConnectionSource.getReadWriteConnection(AndroidConnectionSource.java:60) E/AndroidRuntime( 7308): at com.j256.ormlite.android.AndroidConnectionSource.getReadOnlyConnection(AndroidConnectionSource.java:50) E/AndroidRuntime( 7308): at com.j256.ormlite.stmt.StatementExecutor.buildIterator(StatementExecutor.java:189) E/AndroidRuntime( 7308): at com.j256.ormlite.stmt.StatementExecutor.query(StatementExecutor.java:153) E/AndroidRuntime( 7308): at com.j256.ormlite.dao.BaseDaoImpl.query(BaseDaoImpl.java:245) E/AndroidRuntime( 7308): at com.j256.ormlite.stmt.QueryBuilder.query(QueryBuilder.java:250) E/AndroidRuntime( 7308): at au.com.ninthavenue.android.notes.application.TagsEM.getRecentTags(TagsEM.java:229) E/AndroidRuntime( 7308): at au.com.ninthavenue.android.notes.activities.EditNote.loadTags(EditNote.java:257) E/AndroidRuntime( 7308): at au.com.ninthavenue.android.notes.activities.EditNote.onCreate(EditNote.java:119)