Java 我能找到NullPointerException的来源吗?

Java 我能找到NullPointerException的来源吗?,java,nullpointerexception,Java,Nullpointerexception,当我尝试以下陈述时 a.do(b.do()); 假设我从那行得到一个NullPointerException 那么,有没有办法找出a是否为null或b是否为null?没有,唯一的解决办法是提取内部表达式: Object o = b.do() a.do(o); 无论如何,这是个好主意。不,唯一的解决方案是提取内部表达式: Object o = b.do() a.do(o); 无论如何,这是一个好主意。如果您在eclispe或任何标准IDE中调试您的程序,您可以执行单步执行b.do()。如果它

当我尝试以下陈述时

a.do(b.do());
假设我从那行得到一个NullPointerException


那么,有没有办法找出a是否为null或b是否为null?

没有,唯一的解决办法是提取内部表达式:

Object o = b.do()
a.do(o);

无论如何,这是个好主意。

不,唯一的解决方案是提取内部表达式:

Object o = b.do()
a.do(o);

无论如何,这是一个好主意。

如果您在eclispe或任何标准IDE中调试您的程序,您可以执行
单步执行
b.do()
。如果它崩溃,您的问题在于
b
对象。如果不是
请从
b.do()
中退出
,然后进入
a.do()
并在那里找到您的问题


我必须说,尽管Tomasz的方法更安全,并且推荐使用,因为它也是可读的

如果您在eclispe或任何标准IDE中调试程序,您可以执行
单步执行
b.do()
。如果它崩溃,您的问题在于
b
对象。如果不是
请从
b.do()
中退出
,然后进入
a.do()
并在那里找到您的问题


我必须说,尽管Tomasz的方法更安全,并且推荐使用,因为它也是可读的

如果该语句导致错误,则a或b都为null。除非分别检查每个对象,否则无法看到哪个对象


还有,“do”不是一个保留关键字吗?不确定。

对于导致错误的语句,a或b都为空。除非分别检查每个对象,否则无法看到哪个对象


还有,“do”不是一个保留关键字吗?不确定。

简单解决方案是在此语句之前对a和b进行显式检查a.do(b.do!=null?b.do:new b().do)。简单解决方案是在此语句之前对a和b进行显式检查a.do(b.do!=null?b.do:new b().do)。+1在任何IDE的调试器中,在任何IDE中的调试器中,您应该能够看到
a
b
的值,然后才能尝试进入该行查看哪个
null
+1;在尝试进入该行查看哪个
null
之前,您应该能够看到
a
b
的值。