【问题标题】:Exception is always NULL异常始终为 NULL
【发布时间】:2010-10-16 15:58:28
【问题描述】:

为什么 Android “Catch” 处理程序不会初始化 Exception 对象?

当发生错误并且我的代码试图初始化一个异常对象时,它总是 NULL。

以上对我来说没有意义,因为异常应该总是初始化异常对象 - 句号。如果发生错误,它永远不应为 null。

我对 Eclipse Android IDE/SDK 相当陌生,我确信我没有 100% 设置好所有东西。但是,在我看来,这种类型的功能应该一直有效,而不是在设置之后。

【问题讨论】:

  • 你能展示你代码的相关部分吗?您使用什么证据得出例外为空的结论?您是如何观察到这些证据的?
  • 嗨,我有以下处理程序设置:catch(Exception ex) { System.out.println("ERROR:\n\n" + ex.toString());当我运行调试时,异常总是 NULL....不管错误是什么。它从不初始化
  • 你在catch块中有断点,ex为null?我觉得很难相信...如果 ex 为 null,您的 print 语句会抛出空指针异常,会发生这种情况吗?
  • 是的,抛出空指针异常。主要调用的方法是 HTTP 调用。我最初收到 HOSTNOTFOUND 异常,因为我的 LAN 连接不工作。但是,当我今天启动 Eclipse 时,不再抛出异常。 Exception 对象只是没有初始化。知道为什么会这样吗?
  • 天哪!!....没有人知道为什么会发生这个错误吗?除了我,没有人遇到过这个问题吗?

标签: android exception


【解决方案1】:

一个可能的原因是您试图在您的主线程上建立网络连接,这在 2.3.3/Honeycomb 之前可以正常工作(例如 SDK 级别

android.os.NetworkOnMainThreadException

从 SDK 级别 10 开始。

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

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

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

【讨论】:

  • 如何在没有异常实例的情况下调用异常处理程序?异常处理程序代码必须有效地测试thrownException instanceof CatchException,并且没有会失败的异常实例。
猜你喜欢
  • 1970-01-01
  • 2020-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-30
相关资源
最近更新 更多