Java try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
在 Java 的 try-catch-finally
结构中,如果在 catch
块中执行了 return
语句,finally
块仍然会执行。finally
块中的代码在 try
或 catch
块中的 return
语句执行之前被执行。
以下是一个示例,演示了 try-catch-finally
中的行为:
public class Example {
public static void main(String[] args) {
System.out.println(performOperation()); // 输出: 20
}
static int performOperation() {
try {
int result = divide(100, 0); // 抛出异常
return result; // 不会执行到这里
} catch (ArithmeticException e) {
System.out.println("Caught exception: " + e.getMessage());
return -1;
} finally {
System.out.println("Finally block is executed.");
}
}
static int divide(int a, int b) {
return a / b;
}
}
在上述示例中,divide
方法尝试做除法运算,由于除数是 0,会抛出 ArithmeticException
。然后程序进入 catch
块,输出错误信息,并返回 -1
。最后,finally
块中的代码会被执行,打印出 “Finally block is executed.”。虽然 catch
块中有 return
语句,但 finally
块仍然会执行。
总的来说,finally
块中的代码在 try
或 catch
中的 return
语句执行之前都会被执行,即便在 catch
中有 return
语句。