gpt4 book ai didi

java - java方法如何在调用之前抛出异常

转载 作者:行者123 更新时间:2023-11-29 09:56:55 25 4
gpt4 key购买 nike

我试图弄清楚提供不可用参数的方法调用是如何在代码的调用行上抛出异常的——在它到达方法行之前。下面是一个例子

1. static Integer x;
2. public static void main(String args[]){
3. doStuff(x)} //null pointer exception thrown on this line
//lines 4-49
50. public static void doStuff(int z){}

在这里,我向该方法发送一个 Integer 对象引用,并且由于自动装箱,一个 Integer 对象是要发送的有效引用。如果调用的方法直到第 50 行才加载到堆栈,为什么 JVM 在第 3 行还没有到达方法签名时抛出空指针异常?

最佳答案

因为 null 不是原始 int 的有效值。

您说得对,由于自动装箱,Integer 对象是接受原始 int 的方法的有效参数。但是,在您在此处描述的情况下,Integer 永远不会被初始化,因此将是 null(Integer 对象的默认未初始化值,与int 的值,即 0)。

这意味着 JVM 尝试通过调用 null.intValue()null 转换为原始 int 以便它适合被调用的方法 - 这就是 NPE 被抛出的地方。

仅供引用,在调用它的行下方声明该方法这一事实没有任何区别,因为 Java 不被解释,它被编译成字节码。

关于java - java方法如何在调用之前抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8124739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com