gpt4 book ai didi

java - 你真的需要 'finally' block 吗

转载 作者:IT老高 更新时间:2023-10-28 13:52:07 24 4
gpt4 key购买 nike

在 java 中有 3 种 try...catch...finally block 的排列。

  1. 尝试...捕获
  2. 尝试...捕获...终于
  3. 尝试...终于

一旦 finally block 被执行,控制就转到 finally block 之后的下一行。如果我删除 finally block 并将其所有语句移动到 try...catch block 之后的行,这是否与将它们放在 finally block 中的效果相同?

最佳答案

我知道这是一个非常古老的问题,但我今天遇到了,我对给出的答案感到困惑。我的意思是,当这个问题有一个非常直接的实际答案时,它们都是正确的,但都是理论上甚至哲学层面的答案。

如果你在 catch block (甚至是 try block )中放置了 return、break、continue 或任何其他改变代码顺序执行的 java 关键字,那么 finally 中的语句 block 仍将被执行。

例如:

public void myFunc() {

double p = 1.0D;
String str = "bla";
try{
p = Double.valueOf(str);
}
catch(Exception ex){
System.out.println("Exception Happened");
return; //return statement here!!!
}finally{
System.out.println("Finally");
}
System.out.println("After finally");
}

执行此代码时将打印:

Exception Happened 
Finally

这是 finally block 存在的最重要原因。大多数答案都暗示它或在场边提及它,但没有一个人强调它。我认为因为这是一个新手问题,所以一个直截了当的答案非常重要。

关于java - 你真的需要 'finally' block 吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3861522/

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