【发布时间】:2013-08-10 11:39:48
【问题描述】:
当 try 块中存在 return; 时,我对 try-finally 的执行感到困惑。在我的理解中,finally 块总是会被执行,即在返回调用方法之前。在考虑以下简单代码时:
public class TryCatchTest {
public static void main(String[] args){
System.out.println(test());
}
static int test(){
int x = 1;
try{
return x;
}
finally{
x = x + 1;
}
}
}
打印出来的结果实际上是1。这是否意味着finally块没有被执行?谁能帮帮我?
【问题讨论】:
-
为什么不在 finally 块中添加
System.out.println()看看自己呢?我认为它已执行但返回的值为 1。 -
使用 try catch 时,可以“捕捉”特定类型的异常(例如:IOException、NullPointerException 等)。finally 语句在特定异常发生时发生,您需要在此之前运行一些代码无论如何都要抓住......
-
Here's 点赞时需要考虑的事情
-
@RicardoE - 不完全正确。如果输入了 try 区域,finally 子句(缺少一些混乱的递归异常情况)总是执行。
-
@Keyser 因为像 Rohit 这样的人的回答,他们花时间实际解释正在发生的事情和所有底层功能,以便每个人,不仅仅是提问者,都可以提出更多全面了解。