try中没有异常的情况下try、catch、finally的执行顺序 try--- finally
如果try中有异常,执行顺序是try--- catch --- finally
如果try中没有异常并且try中有return这时候正常执行顺序是try ----finally --- return
如果try中有异常并且try中有return这时候正常执行顺序是try----catch---finally---return
总之 finally 永远执行!
try-catch-finally里都没有return ,finally 之后有个return,如果try中有异常,finally执行完后,还能执行return吗?那是不可能执行的了,try中有异常以后,根据java的异常机制先执行catch后执行finally,此时错误异常已经抛出,程序因异常而终止,所以你的return是不会执行的
   在存在try-catch-finally的方法中,return可能出现的位置有4个,在try中,在catch中,在finally中,在finally后(try-catch-finally外的语句块)。
   在这4个位置都出现return的情况下(事实上应该是不可能的,如果前面3个位置都存在return,那么最后一个位置的return就成了unreachablecode,编译不会通过),最终会执行的return应该是finally中的return。也就是finally中的return会覆盖掉其它位置的return
try中有return语句

-------- try catch finally顺序:
1.try {}.
2.如果有Error Exception则,执行catch(){}中的代码。
3.无论有没有 Error Exception都要执行finally{}中的代码。
4.执行 try 中的 return

catch中有return

但当finally中不存在return,而catch中存在return,但finally中的语句又会对catch中的return的值产生影响时,情况就有点复杂。

int ret = 0;
try{throw new Exception();}
catch(Exception e){ret = 1; return ret;
}
finally{ret  = 2;

}

这里finally中没有return,但是将catch中要return的ret赋值为2.那么最后返回的值是1. 为什么?
从调试中可以知道Finally中的赋值语句的确被执行了,而执行完这条finally语句后的下一条语句就是catch中的return,那么为啥返回的是1呢?
catch中有return,finally中没有return,return的值在执行finally之前已经确定下来了。
另一个值得注意的是最后的return(位于try-catch-finally外)并没有被执行。

转载于:https://www.cnblogs.com/mrcharles/p/4731770.html

try-catch-finally中return的执行情况相关推荐

  1. 关于JavaScript中return的使用情况

    关于JavaScript中return的使用情况 return的理解 return的使用 注意点 return的理解 return;语句会终止函数的执行,并赋值给函数的结果,将其返回. return; ...

  2. 关于Java里try/catch/finally/有return时执行过程

    Java代码: public class Test1 {   public static void main(String[] args) {     int a=method1();     Sys ...

  3. try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗

    finally 一定会执行 try-catch-finally中return的执行情况: 在try中没有异常的情况下try.catch.finally的执行顺序 try --- finally 如果t ...

  4. 在办理减刑、假释案件中审查处理罪犯财产刑执行情况的调研

    在办理减刑.假释案件中审查处理罪犯财产刑执行情况的调研 7小时前 在办理减刑.假释案件中审查处理罪犯财产刑执行情况的调研来源:金华市中级人民法院 作者:金华中院审监庭课题组 发布时间:2010-6-2 ...

  5. java try 返回值_JAVA的try... catch finally的return返回值问题

    下面看一个例子(例1),来讲解Java里面中try.catch.finally的处理流程 public class TryCatchFinally { @SuppressWarnings(" ...

  6. (转)java 中的try catch finally 语句中含有return语句的执行情况(总结版)

    原处:http://blog.csdn.net/ns_code/article/details/17485221 在这里看到了try catch finally块中含有return语句时程序执行的几种 ...

  7. Java中try catch finally语句中含有return语句的执行情况

    最近刷笔试题遇到的问题,记录下来. 在这里看到了try >但有一点是可以肯定的,finally块中的内容会先于try中的return语句执行,如果finall语句块中也有return语句的话,那 ...

  8. java中return不运行的情况_Java中try catch finally语句中含return语句的执行情况总结-编程陷阱...

    前言:有java编程基础的人对java的异常处理机制都会有一定了解,而且可能感觉使用起来也比较简单,但如果在try catch finally语句块中遇到return语句,开发者可能就会遇到一些逻辑问 ...

  9. try catch finally 中包含return的几种情况,及返回结果

    第一种情况:在try和catch中有return,finally中没有return,且finally中没有对try或catch中要 return数据进行操作的代码,这种情况也是最好理解的. publi ...

最新文章

  1. ViewPager的缓存机制
  2. 设计建造者模式java代码,Java设计模式-建造者模式
  3. 棋盘最短路径 python_Dijkstra 最短路径算法 Python 实现
  4. java 代码 内存泄露_如何用Java编写一段代码引发内存泄露
  5. Reasoning about Entailment with Neural Attention-学习笔记
  6. Linux系统【三】回收子进程
  7. Repeater简单应用(动态改变内部样式)
  8. window tomcat 端口冲突问题解决
  9. 温湿度服务器系统软件,无线温湿度监测系统
  10. 二开要饭网免费开源源码
  11. 小程序 房租水电费记录管理_收租小程序开发有哪些功能和优势?
  12. 无忧微店自动发货软件
  13. 蓝丝雨零基础DNF脚本开发速成系列
  14. Logism · 原码一位乘法器 实验
  15. 农产品管理系统-毕设
  16. 如何将谷歌地图叠加到MapGIS三维地球场景
  17. [Luogu P3975] [TJOI2015]弦论
  18. CSDN联合BSV发布首个区块链开发工程师能力认证
  19. DO-214AC封装尺寸图
  20. 【NOJ1047】【算法实验四】田忌赛马(tian ji racing)

热门文章

  1. java的初始化顺序
  2. 「小程序JAVA实战」小程序视频上传方法的抽象复用(57)
  3. 架构演进之「微服务架构」
  4. 网申时遇到“补充信息”这一栏,填还是不填?
  5. 【技术实验】表格存储Tablestore准实时同步数据到Elasticsearch
  6. 针对蓝牙4.0 BLE通讯过程的逆向和攻击
  7. TensorFlow教程之进阶指南 3.4 TensorBoard: 图表可视化
  8. tcpdump基础教程
  9. 前端:JS中JSON对象和String转换
  10. 猫头鹰的深夜翻译:在JVM上根据合约编程