gpt4 book ai didi

java - 为什么这段java代码没有捕获所有异常

转载 作者:行者123 更新时间:2023-12-02 04:58:01 25 4
gpt4 key购买 nike

我不明白为什么这段代码只抛出 NullPointerException。

(有 System.getProperty("") 代码抛出 IllegalArgumentExceptionx=x/0; 抛出 ArithmeticException:/by Zero 但在第一个语句处,抛出异常,除 while 循环外,其他异常均被忽略)

public static void main(String[] a) {


try {
String current = System.getProperty(null);
String current2 = System.getProperty("");
int num=2;
num=num/0;
System.out.println(String.valueOf(num));
}
catch(Exception e){

System.out.println(e.toString());

}

int i = 0;
while (i < 10) {
i++;
System.out.println(i);
}

/**/
}

为什么直到所有表达式都被求值并打印异常之后代码才会继续执行?

输出是:

java.lang.NullPointerException: key can't be null
1
2
3
4
5
6
7
8
9
10

最佳答案

这根本不是 Java 中异常处理的工作方式。异常的抛出会传播到调用堆栈中第一个符合条件的 catch block ,在本例中为 catch Exception(..) block 。 block 运行后,执行会在catch底部处恢复。

在引发Exception 的行之后继续执行是没有意义的。您无法保证对象状态,并且可能会使调试变得更加困难。但无论如何,您不应该使用异常处理作为流程控制。有关详细信息,请参阅此处:http://c2.com/cgi/wiki?DontUseExceptionsForFlowControl

关于java - 为什么这段java代码没有捕获所有异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28587215/

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