为了响应Java 的 NullPointerException 可以更改为报告哪个变量为空? 索比约恩-拉文-安德森说:
不,类文件中的调试信息不包含足够的信息来允许这样做。
我的问题是,为什么不呢?
为了响应Java 的 NullPointerException 可以更改为报告哪个变量为空? 索比约恩-拉文-安德森说:
不,类文件中的调试信息不包含足够的信息来允许这样做。
我的问题是,为什么不呢?
它可能根本不是一个变量:它可能是一个临时结果,例如方法调用的结果。到 NPE 发生时,它只是一个匿名堆栈槽。
实际的异常指向特定的字节码指令,但语言语句可能会扩展为数十条指令,并引用了六个不同的指针。此外,指针可能在几条指令的持续时间内一直保存在临时存储器(字节码堆栈)中,因此与特定变量名称的关联可能会丢失。
一个花哨的调试器可以对“出错”的变量做出公平的猜测,但一般来说,指向失败的语句就足够了(尽管请记住,失败可能是由于先前的语句,其动作是延期)。
因为代码中的行号足以跟踪它。