try-catch-finally-return执行顺序
时间: 2023-12-05 19:05:13 浏览: 201
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语句
```
相关问题
try-catch-finally执行顺序
回答: 在try-catch-finally结构中,无论try代码块是否发生异常,finally代码块都会被执行。如果try代码块没有发生异常,那么catch代码块将不会执行,而是直接跳转到finally代码块。如果try代码块发生了异常,那么首先会执行catch代码块来捕获异常,然后再执行finally代码块。所以无论是否有异常发生,finally代码块总是会在try或catch中的return语句之前执行。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [try/catch-finally的执行顺序](https://blog.csdn.net/HandCream123/article/details/120115406)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
- *3* [try-catch-finally的执行顺序](https://blog.csdn.net/tangxiujiang/article/details/116562388)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
为什么try-catch-finally中,如果catch 中 return 了,finally 还会执行
在 try-catch-finally 中,如果 catch 中执行了 return,那么 finally 仍然会执行。这是因为 finally 块中的代码总是会在 try 或 catch 中的代码执行完毕后执行,无论是否有异常抛出,都会执行 finally 块中的代码。如果 catch 中执行了 return,那么 finally 块中的代码会在 return 之前执行,确保资源的释放和清理。
阅读全文