【发布时间】:2011-07-26 17:34:32
【问题描述】:
我遇到了 Android 问题。我在设备上开发并且在捕获异常时遇到问题。我在 AsyncTask 中运行了一些代码,最后将其简化为:
try
{
if (true)
throw new Exception("ERROR");
}
catch (Exception e)
{
Log.e("e", "exception", e);
}
我的问题是 'e' 变量始终为空。不确定实际发生了什么。更重要的是它有时会起作用,但我不能说什么时候。我刚从电脑上起身几分钟,回来后就响了,它起作用了。几分钟又一次进行编码,它是空的......大约一年前有一个关于 SO 的问题,但没有人知道答案。说不定这一次有人会有什么想法。
我认为它与 AsyncTask 外部有关,我正确捕获了异常...仍然不知道为什么:( 我发现它仅在连接调试器时发生。当我拿出来自它实际捕获的设备的电缆,并且异常不再为空......
【问题讨论】:
-
你是在 UI 线程上实例化 AsyncTask 吗?你在 UI 线程上调用 execute(Params...) 吗?您是否手动调用 onPreExecute()、onPostExecute(Result)、doInBackground(Params...)、onProgressUpdate(Progress...)?您是否多次调用该任务?
-
一个实例,无需手动调用 on* 方法。在 UI 线程上使用 execute(params) 调用它。我想我会转告那个案子......事情是其他人让它工作,所以我现在会留下来在我的 vm linux 机器上开发呵呵
-
明智的决定!如果它在手机上工作,没问题。
-
您好!我有同样的问题,我可以在其他计算机上重现它。我发现这很有趣adarshr.com/papers/npe
-
我也遇到了这个问题,
AsyncTask。我试图打开一个OutputFileStream到一个父目录还不存在的文件。这只是因空异常而崩溃。在我的情况下,添加parentDir.mkdirs()解决了这个问题,但这可能是关于正在发生的事情的线索。
标签: java android exception null