gpt4 book ai didi

java - 处理异常

转载 作者:行者123 更新时间:2023-11-30 09:31:01 26 4
gpt4 key购买 nike

我对这段代码有疑问,它与异常有关:

public class MTest {
public static void main(String args[]) {
try {
m1();
m2();
} catch (Exception e1) {
System.out.println("e");
}
}

static void m1() throws Exception {
try {
throw new Exception();
} catch (Exception e2) {
System.out.println("m1catch");
}
}

static void m2() throws Exception {
try {
throw new Exception();
} finally {
System.out.println("Finally");
}
}
}

所以根据上面的代码,教科书告诉我m2()方法没有处理自己的异常,而是传给了main。这是什么意思?我怎么能从上面的代码中看出呢? m1() 是否处理自己的异常?

最佳答案

任何可以在方法内部抛出的检查异常都必须在 try/catch block 中处理,或者必须声明该方法以抛出该异常。当您尝试编译违反这些规则的代码时,Java 编译器会报错。

m1() 捕获唯一的已检查异常,因此它会处理自己的异常。如果您从 m1() 的声明中删除 throws Exception,它将正确编译,这意味着它确实处理了所有已检查的异常。

m2() 不处理它的异常。如果从 m2() 的声明中删除 throws Exception,您将得到一个编译错误,因为有一个异常被抛出但没有被捕获或检查。

关于java - 处理异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13040869/

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