首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导致跳过Log.e()的异常

导致跳过Log.e()的异常
EN

Stack Overflow用户
提问于 2013-06-07 14:21:27
回答 1查看 245关注 0票数 0

我正在尝试调试以下代码:

代码语言:javascript
复制
public Cursor getUpdateTimestamps() {
    Cursor timestamps;
    try {
        // int j = 3 / 0; // This will throw a divide-by-zero exception

        timestamps = this.read_db.query(UPDATES_TABLE, new String[] { C_ID, U_C_TABLE, U_C_LAST_UPDATE }, null, null, null, null, null);

        return timestamps;
    } catch (Exception e) {
        Log.e(TAG, "An error occurred in getUpdateTimestamps(): " + e.getMessage() + " | " + e.getCause());
        return null;
    }
}

我将断点设置在将timestamps设置为this.read_db.query...的行上,并在连接的设备(三星GalaxyS3)上启动调试器。

当我到达断点时,我转到下一个语句,这会导致抛出一个异常。但是,调试器没有进入我的catch块中的第一行,而是直接跳过我的return null语句,而没有记录我的错误消息。它还跳过了对System.out.println的任何调用。

当我取消注释int j = 3 / 0;时,会抛出并捕获正确的异常,并记录错误消息。

什么类型的异常会导致Log.e()方法被完全忽略?

更新:--我还注意到日志中有以下堆栈跟踪,但不能确定它是否与此问题有关:

代码语言:javascript
复制
06-07 11:57:44.717    1757-1757/?                              W/System.err: android.database.sqlite.SQLiteConstraintException: column packagename is not unique (code 19)
06-07 11:57:44.717    1757-1757/?                              W/System.err: at android.database.sqlite.SQLiteConnection.nativeExecuteForChangedRowCount(Native Method)
06-07 11:57:44.717    1757-1757/?                              W/System.err: at android.database.sqlite.SQLiteConnection.executeForChangedRowCount(SQLiteConnection.java:857)
06-07 11:57:44.717    1757-1757/?                              W/System.err: at android.database.sqlite.SQLiteSession.executeForChangedRowCount(SQLiteSession.java:754)
06-07 11:57:44.717    1757-1757/?                              W/System.err: at android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:64)
06-07 11:57:44.717    1757-1757/?                              W/System.err: at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1665)
06-07 11:57:44.717    1757-1757/?                              W/System.err: at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1594)

我的SQLite表中没有一个列名为packagename,因此这可能与此无关。

EN

回答 1

Stack Overflow用户

发布于 2013-06-07 14:36:57

当您还没有在新的调试迭代之前重建您的项目时,您所描述的行为非常类似于这种情况。

当您取消注释提到的行时,调试器开始使用Log.e(TAG, "...在正确的位置查看行。

我敢肯定,如果你停止调试和重建项目,一切都会好起来的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16986405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档