相关疑难解决方法(0)

如何在getter链中跟踪NullPointerException

如果我在这样的调用中得到NullPointerException:

someObject.getSomething().getSomethingElse().
    getAnotherThing().getYetAnotherObject().getValue();
Run Code Online (Sandbox Code Playgroud)

我得到一个相当无用的异常文本,如:

Exception in thread "main" java.lang.NullPointerException
at package.SomeClass.someMethod(SomeClass.java:12)
Run Code Online (Sandbox Code Playgroud)

我发现很难找到实际上调用returend null,经常发现自己将代码重构为这样的东西:

Foo ret1 = someObject.getSomething();
Bar ret2 = ret1.getSomethingElse();
Baz ret3 = ret2.getAnotherThing();
Bam ret4 = ret3.getYetAnotherOject();
int ret5 = ret4.getValue();
Run Code Online (Sandbox Code Playgroud)

然后等待更具描述性的NullPointerException,告诉我要查找哪一行.

你们中的一些人可能认为连接getter是一种糟糕的风格,无论如何都应该避免,但我的问题是:我可以在不更改代码的情况下找到错误吗?

提示:我正在使用eclipse,我知道调试器是什么,但我无法弄清楚如何将它应用于问题.

我对答案的结论是:
有些答案告诉我,我不应该一个接一个地连接吸气剂,一些答案显示我如何调试我的代码,如果我不赞成这个建议.

我已经接受了一个答案,这个答案让我知道什么时候连接吸气剂:

  • 如果他们不能返回null,只要你喜欢就链接它们.不需要检查!= null,无需担心NullPointerExceptions(请注意链接仍然是demeter的法则,但我可以忍受)
  • 如果它们可能返回null,则不要永远不会链接它们,并对每个可能返回null的值执行空值检查

这使得对实际调试的任何好建议毫无用处.

java debugging getter nullpointerexception

26
推荐指数
4
解决办法
7765
查看次数

标签 统计

debugging ×1

getter ×1

java ×1

nullpointerexception ×1