gpt4 book ai didi

java - finally子句java中的break语句

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:32:02 25 4
gpt4 key购买 nike

  public class FinallyTest {
static int i=0;
public static void main(String a[]){
while(true){
try{
i=i+1;
return;
}finally{
i=i+1;
break;
}
}
System.out.println(i);
}
}

在上面的代码中输出是'2'。我所期待的是什么都不应该被打印出来。 “break”在这里到底做了什么?请解释。谢谢

最佳答案

finally 子句更改了 try 子句的“完成原因”。详细解释参见JLS 14.20.2 - Execution of try-catch-finally , 引用JLS 14.1 Normal and Abrupt Completion of Statements .

这是 Java 语言中那些奇怪的边缘情况之一。最佳做法是不要故意更改 finally 子句中的控制流,因为这种行为很难让读者理解。

这是另一个病态的例子:

// DON'T DO THIS AT HOME kids
public int tricky() {
try {
return 1;
} finally {
return 2;
}
}

关于java - finally子句java中的break语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6556199/

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