gpt4 book ai didi

java - 为什么这个异常不会导致运行时错误?

转载 作者:行者123 更新时间:2023-11-30 06:09:19 24 4
gpt4 key购买 nike

我在练习题中有以下代码:

public class Test {

static String s = "";

public static void m0(int a, int b) {
s += a;
m2();
m1(b);
}

public static void m1(int i) {
s += i;
}

public static void m2() {
throw new NullPointerException("aa");
}

public static void m() {
m0(1, 2);
m1(3);
}

public static void main(String args[]) {
try {
m();
} catch (Exception e) {
}
System.out.println(s);
}
}

在方法 m2 中,当抛出 NullPointerException 时,为什么它没有按照我的预期终止线程?我认为由于同一方法中没有 try catch block ,因此会导致异常并停止程序。

据我了解,当我认为抛出的异常会停止程序时,它已恢复到之前调用的方法 m0。最终结果是程序打印 1,作为 s 的值。

到目前为止,我读到的有关异常的所有内容都没有解释这个逻辑,而且我自己也无法解决这个问题,所以我希望能得到一些帮助!提前致谢。

最佳答案

when the NullPointerException is thrown, why does it not terminate the thread as I expected?

因为除非异常沿着调用链一路向上,否则线程不会终止。

I thought as there was not a try catch block in the same method, it would cause an exception and halt the program.

这不是同一个方法,它位于调用链上游的任何方法中 - 在这种情况下,main 捕获异常,防止线程终止。

关于java - 为什么这个异常不会导致运行时错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38186606/

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