尝试捕获异常始终返回空值

2022-09-04 04:01:41

我有安卓系统的问题。我在设备上开发,但在捕获异常时遇到问题。我在AsyncTask中运行了一些代码,最后将其简化为:

try
{
    if (true)
        throw new Exception("ERROR"); 
}      
catch (Exception e)
{    
    Log.e("e", "exception", e);
}

我的问题是'e'变量总是空的。不知道到底发生了什么。更重要的是,它有时有效,但我不能说什么时候。我只是从电脑上站起来几分钟回来,轰隆一声,它有效。进行编码几分钟,它再次为空...大约1年前,SO上有一个问题,但没有一个已知的答案。也许这次有人会有一些想法。

Null exception

我认为它与AsyncTask有关,因为在它之外,我正确地抓住了异常......仍然不知道为什么:(我发现它只发生在debbuger连接时。当我从设备中取出电缆时,它实际上会捕获并且异常不再为空...


答案 1

在这一点上不可能有空值。如果您使用 Eclipse 调试应用程序,它将显示此时的值,并且返回 。ee.toString()e.toString()null

尝试使用此代码进行另一个测试:

try {
    if (true) {
        throw new Exception("ERROR");
    } 
}      
catch (Exception e) {
    if (e == null) {
        Log.e("e", "e is really null!!!");
    }
    else {
        Log.e("e", "e is not null, toString is " + e + " and message is " + e.getMessage());
    }
}

答案 2

我知道这是一个老问题,但这也发生在我身上,似乎问题出在调试器本身!
当我从 eclipse ( + ) 运行我的应用时,它会捕获一个正确的异常 ()。ctrlF11e != null