为什么try-catch-finally中,如果catch 中 return 了,finally 还会执行
时间: 2023-05-20 16:04:04 浏览: 89
在 try-catch-finally 中,如果 catch 中执行了 return,那么 finally 仍然会执行。这是因为 finally 块中的代码总是会在 try 或 catch 中的代码执行完毕后执行,无论是否有异常抛出,都会执行 finally 块中的代码。如果 catch 中执行了 return,那么 finally 块中的代码会在 return 之前执行,确保资源的释放和清理。
相关问题
try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
无论在 `try` 块、`catch` 块或者是 `finally` 块中,只要遇到 `return` 语句,就会直接结束当前方法并返回相应的值。因此,如果在 `catch` 块中执行了 `return` 语句,那么 `finally` 块也会执行,但是 `finally` 块中的任何 `return` 语句都会覆盖之前的 `return` 语句,从而改变函数的返回值。如果在 `finally` 块中执行了 `return` 语句,那么会直接结束方法并返回该值,而不会再考虑之前的 `try` 块和 `catch` 块中的 `return` 语句了。
try-catch-finally-return执行顺序
try-catch-finally-return执行顺序如下:
1.程序先执行try块中的代码。
2.如果try块中的代码出现异常,则跳转到catch块中执行相应的代码。
3.如果catch块中有return语句,则执行return之前(包括return语句中的表达式运算)的代码,然后执行finally块中的全部代码,最后执行catch块中的return语句。
4.如果try块中的代码没有出现异常,则执行finally块中的全部代码,最后执行try块中的return语句。
5.如果finally块中有return语句,则直接执行finally块中的return语句,不再执行try块中的return语句。
以下是两个try-catch-finally-return执行顺序的例子:
1.情况3:
```java
try {
//执行try块中的代码
} catch (Exception e) {
//执行catch块中的代码
return; //执行catch块中的return语句之前的代码
} finally {
//执行finally块中的全部代码
}
return; //执行catch块中的return语句
```
2.情况2:
```java
try {
return; //执行try块中的return语句
} catch (Exception e) {
//执行catch块中的代码
} finally {
//执行finally块中的全部代码
}
return; //执行try块中的return语句
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)