异常始终为NULL

9
为什么Android的"Catch"处理程序不会初始化异常对象?
当错误发生并且我的代码试图初始化一个异常对象时,它始终为NULL。
以上对我来说没有意义,因为异常应该总是初始化异常对象-无论如何。如果发生错误,它永远不应该为null。
我对Eclipse Android IDE / SDK相当新,并且我确定我没有100%地设置好所有内容。然而,这种功能似乎应该始终起作用,而不是在设置后才能使用。

1
你能展示一下你代码的相关部分吗?你用了什么证据得出这个异常是空的结论?你是如何观察到这个证据的? - Mark Byers
你在 catch 块中设置了断点,而 ex 是 null?我觉得很难相信... 如果 ex 是 null,你的打印语句会抛出空指针异常,这是发生了吗? - Cheryl Simon
是的,抛出了一个空指针异常。主调用方法是一个HTTP调用。最初我遇到了HOSTNOTFOUND异常,因为我的局域网连接不工作。然而,当我今天启动Eclipse时,异常不再被抛出。异常对象只是没有初始化。你有任何想法为什么会发生这种情况吗? - John
我现在遇到了同样愚蠢的错误。为什么会有东西抛出 null?这绝对是 Dalvik 错误。 - Martín Schonaker
我仍然偶尔看到这种情况发生。这相当没有帮助! - melodiouscode
显示剩余2条评论
1个回答

6

可能的原因之一是您正在主线程上尝试进行网络连接,在2.3.3 / Honeycomb之前(例如SDK级别<10),这很好用,但会被抛出。

android.os.NetworkOnMainThreadException

自SDK 10级以来。

请检查:http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html

问题在于Eclipse并不真正了解此异常(因为它是基于不同的SDK级别有条件地抛出的,所以Eclipse可能无法获得正确的此异常实例,这就解释了为什么您的异常对象始终为空)

解决方案:创建一个单独的线程或使用AsyncTask执行您的网络连接请求。


如何在没有异常实例的情况下调用异常处理程序?异常处理程序代码必须有效地测试 thrownException instanceof CatchException,而没有异常实例就会失败。 - Hot Licks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接