try catch exception总是返回null

时间:2011-07-26 17:34:32

标签: java android exception null

我遇到了Android问题。我在设备上开发并且在捕获异常时遇到问题。我在AsyncTask中运行一些代码,最后将其简化为:

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

我的问题是'e'变量始终为null。不确定实际发生了什么。它有时会起作用,但我不能说什么时候。我只是从电脑起床几分钟后回来繁荣,它的工作原理。做几分钟的编码再次它是空的...大约一年前有一个关于SO的问题,但没有人知道答案。也许这次有人会有一些想法。

Null exception

我认为它与AsyncTask有关,就在它外面,我得到了正常的异常捕捉......仍然没有任何线索原因:(我发现只有当debbuger连接时才会发生。当我拿出时来自它实际捕获的设备的电缆,异常不再是空的......

4 个答案:

答案 0 :(得分:4)

此时不可能让e具有空值。如果您使用Eclipse调试应用程序,它将在该点显示e.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());
    }
}

答案 1 :(得分:2)

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

答案 2 :(得分:2)

我遇到了同样的问题....我发现这是其他人说过的调试器。所以我要调试的是将断点放在catch块的第一行,而不是在catch块上。似乎为我工作!

答案 3 :(得分:1)

我在AsyncTask中遇到了完全相同的奇怪问题,同时在真实设备(Galaxy Tab 2)上进行调试。 (是的,我让"e is really null!!!"做了@italo建议的测试)

对我来说,拔掉Android设备的usb插头并在之后再次连接(然后再次运行我的应用程序)后,问题神秘地消失了。

正如here所解释的那样,清理和重建项目的另一个建议并没有为我解决(但也许对其他人来说)。