gpt4 book ai didi

java - 为什么会有这样的输出?

转载 作者:搜寻专家 更新时间:2023-11-01 01:51:53 25 4
gpt4 key购买 nike

这可能很简单,但我不明白为什么输出是 1 4。第 9 行的 return 语句的功能是什么?

public static void main(String[] args) {
try{
f();
} catch(InterruptedException e){
System.out.println("1");
throw new RuntimeException();
} catch(RuntimeException e){
System.out.println("2");
return; \\ Line 9
} catch(Exception e){
System.out.println("3");
} finally{
System.out.println("4");
}
System.out.println("5");
}
static void f() throws InterruptedException{
throw new InterruptedException("Interrupted");
}

提前致谢。

最佳答案

你的 function f() 抛出 InterruptedException,它被第一个 catch block 捕获(因此它打印 1),但是这个 catch block 不能抛出其他异常(如果它不是由您的方法抛出的),因此,没有其他 catch block 可以捕获您的异常并因此最终被执行(最终在除了那些愚蠢的无限循环情况之外的所有情况下执行)。可以引用Exception thrown inside catch block - will it be caught again? .

希望对你有帮助。

总而言之,您可以从 try block 中抛出任何异常,并且它会被捕获(如果有一个好的 catch block )。但是从 catch block 中只能抛出您的方法抛出的那些异常(并因此被捕获)。

如果您从 catch block 中抛出您的方法未抛出的异常,则意义不大并且不会被捕获(就像您的情况一样)。

关于java - 为什么会有这样的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26355336/

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