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
的值。