是否有可能区分哪个部分是否为堆栈跟踪?

时间:2016-10-17 07:15:27

标签: java nullpointerexception stack-trace

当我有一个方法时:

public class Tttttt {

    public Thing getThingBy(String name) {
      return aaa.getThingBy(name);
    }
}

然后我在日志NPE中看到

Caused by java.lang.NullPointerException
   at xxx.yyy.Tttttt.getThingBy(SourceFile:666)

666符合方法定义,那么我可以说namenull还是aaanull

2 个答案:

答案 0 :(得分:2)

在这种情况下,aaanull

name也可以是null,但它会作为参数传递给getThingBy,如果异常被丢弃,您的堆栈跟踪中会有更多条目那里。

答案 1 :(得分:1)

  

我可以说name是null还是aaa是null?

这是一个很糟糕的例子...... aaa肯定是空的。将null参数传递给该方法不会引发任何异常。即使该方法确实调用了自己,你也会在堆栈跟踪中看到它。

假设它再次被调用,并且您在完全相同的行上使用了aaa.someMethod(name.length())。那么你仍然可以根据stacktrace中提到的类类型和方法来确定变量,就像at xxx.yyy.Tttttt.getThingBy

这个问题Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference一样