【发布时间】:2012-02-12 11:31:08
【问题描述】:
类似的问题在这里被问了两次,从来没有任何答案。或者答案是:“不可能!”抱歉,可能太多了:
try{
...
// the line that causes the error
LinearLayout cell = (LinearLayout) inflater.inflate(R.layout.channels_list_cell, column);
...
}
catch(Throwable e){
Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show(); < breakpoint here!
}
在断点处,e 为空。请问我该如何寻找错误?很可能不是java或Android的问题,而是Eclipse调试器的问题,它本身需要调试得很厉害。但是,除了更换到不同的 IDE 之外,我还能做什么?有任何想法吗?事先表示感谢。
我尝试过 Throwable、Exception、RuntimeException。结果是一样的。
尝试越过断点会导致 NullPointerException,因此,在那一刻,e 似乎真的为 null。它会丢失在哪里?
编辑: 我对每个人表示感谢,并对每个回答者 +1。这是一个 Eclipse 错误。重新启动 Eclipse 后,异常不再为空,它是一个正常的 RuntimeException:二进制 XML 文件第 15 行:您必须提供 layout_width 属性。这将是另一个需要解决的问题,但这个问题已经解决了。
【问题讨论】:
-
为什么要捕获 Throwable 而不是 Exception?
-
我试过 Throwable、Exception、RuntimeException。结果是一样的。
-
我自己从不使用调试器,但从我在其他人使用它时看到的情况来看,它为给定对象显示的内容似乎是在该对象上调用
String.valueOf(...)的结果。因此,如果捕获的异常的toString()方法返回null或'null',那么调试器可能会产生错误的印象,即捕获的异常本身就是null。 -
收到异常时 LogCat 会说什么?
-
你确定吗?您是否知道异常为空,或者这是基于某些运行时因素的假设?如果将 toast 代码更改为简单的 Log.d("", e.getMessage()) 会怎样?
标签: java android eclipse debugging null