使用Eclipse进行调试时,追踪空指针异常的最佳方法是什么?

时间:2015-07-01 09:21:09

标签: java eclipse debugging nullpointerexception

我们在使用Eclipse跟踪代码中的空指针异常时遇到了麻烦,我想知道Eclipse是否在这方面提供了任何帮助。 Eclipse提供了哪些方法可以轻松跟踪Null Pointer Exceptions?

为了说明,这是一个抛出NPE的典型代码示例:

if (myObject.getDimensionMap().get(keyValue.getConcept()).isMeasureDimension()) {

除非我弄错了,否则有5种可能的对象可能为空:

  • myObject可以为null
  • myObject.getDimensionMap可以为null
  • keyValue可以为null
  • keyValue.getConcept可以为null
  • myObject.getDimensionMap()。get(keyValue.getConcept)可以为null

避免更改代码的参数,以便每个语句都在不同的行上,Eclipse是否提供了帮助查找NPE的任何方法,而无需单步执行每个语句?请记住,开发团队花了很长时间才得到这个声明,更不用说找出哪个元素是null(这是getDimensionMap()。get)。

更新

找到NPE的实际原因需要很长时间,因为违规代码被隐藏在深度调用层次结构中,其中外层有一个捕获所有异常。这样做的原因是,异常可以以更具吸引力的格式呈现并显示给用户。所以代码就像

try {
  doSomething
  ...
    callSomething
      callSomethingElse
      ...
      offending if test which throws the NPE
      ...
} catch (Exception e) {
   // Format exception and pass back to client
}

当然,用户永远不希望看到短语NullPointerException ....

感谢。

1 个答案:

答案 0 :(得分:4)

从Eclipse,运行/添加java异常断点。

选择NullPointerException。确保'暂停捕获的异常'被勾选。

唯一的缺点是它会触发任何有意提升并在内部捕获NPE的代码。