.try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally{}里的代码会不会被执行,什么时候被执行,在 return 前还是后?
时间: 2024-04-11 13:32:36 浏览: 91
在try块中的return语句之前,紧跟在try块后面的finally块中的代码会被执行。finally块中的代码无论是否发生异常,都会在try块中的return语句执行之前被执行。
当发生异常时,异常会被抛出并由上层调用栈处理,但是在异常被抛出之前,finally块中的代码会被执行。如果没有发生异常,try块中的代码执行完毕后,也会执行finally块中的代码。
需要注意的是,如果在finally块中也包含了return语句,则会在执行完finally块中的代码后,再次回到try块中的return语句进行返回。如果finally块中抛出了异常,那么整个方法会以finally块中抛出的异常为准进行处理。
相关问题
try{ }里有一个return语句,那么紧跟在这个try后的finally{ }里的代码会不会被执行,什么时候被执行?
如果 `try` 块中有 `return` 语句,则在执行 `return` 之前,将会先执行 `finally` 语句块中的代码,然后执行 `return` 语句。这意味着,无论 `try` 块中是否有异常,`finally` 块中的代码都将被执行,以确保资源被正确释放。
下面是一个示例代码:
```java
public static int test() {
try {
return 1;
} finally {
System.out.println("finally block is executed.");
}
}
```
在上面的示例中,`test()` 方法中的 `try` 块中有一个 `return` 语句,但是在执行 `return` 语句之前,`finally` 块中的代码会被执行。因此,当调用 `test()` 方法时,将会输出 "finally block is executed." 字符串,然后返回值 1。
需要注意的是,如果在 `finally` 块中也有 `return` 语句,则它将会覆盖 `try` 块中的 `return` 语句。这意味着,无论 `try` 块中的代码是否有异常,`finally` 块中的 `return` 语句将会被执行,并且会覆盖 `try` 块中的 `return` 语句。因此,建议在 `finally` 块中不要使用 `return` 语句,而是使用其他的方式来确保资源的正确释放。
try #里有一个return 语句,那么紧跟在这个ty 后的finally 里的code 会在什么时候执行?
在Java中,无论try代码块中是否有return语句,finally块中的代码都会在以下情况下执行:
1. 当try代码块中的代码执行完成后,无论是否抛出异常;
2. 当try代码块中抛出了一个异常,而且该异常被catch代码块捕获并处理后;
3. 当try代码块中抛出了一个异常,但没有被任何catch代码块捕获,该异常会在finally代码块执行后被抛出。
总之,finally块中的代码总是会在try代码块中的代码执行完成后被执行,无论try代码块中是否有return语句。如果存在finally块,那么它提供了一个机会来释放资源、关闭文件或者执行任何必要的清理操作。