Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 导致跳过Log.e()的异常_Java_Android_Exception Handling_Try Catch - Fatal编程技术网

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

Java 导致跳过Log.e()的异常,java,android,exception-handling,try-catch,Java,Android,Exception Handling,Try Catch,我正在尝试调试以下代码: 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_LA

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

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的行上设置断点。读取\u db.query…
并在连接的设备(三星Galaxy S3)上启动调试器

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

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

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

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

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
,因此这可能是不相关的。

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

当您取消注释提到的行时,调试器开始查看位于正确位置的
Log.e(标记“…
)行


我确信,如果您停止调试并重建项目,一切都会正常。

其他日志语句是否正常工作?如问题中所述,
当我取消注释int j=3/0时,会抛出并捕获正确的异常,并记录错误消息。
如果您试图捕获可丢弃的日志,会发生什么?同样的事情-跳过任何calls到输出方法(
t.printStackTrace()
Log.e(…)
,并直接转到
return
语句。您发布的logact输出与我从数据库查询异常中所期望的完全一样。您是否尝试过使用
Log.e(字符串,字符串,可丢弃)
而不是
Log.e(字符串,字符串)
?我做了一次清理和构建。没有骰子-同样的问题。