我们都知道在try-catch-finally中,try块先执行,如果捕获到异常,则执行catch块,如果没有捕获到异常,那么catch块始终不执行,在catch块执行完之后,finally块最后执行。
则那么问题来了(假设都没有捕获异常)
1,如果try块中有return语句,那么finally会执行吗?
答案:会(实践在后面)

2,如果finally块中改变了try块中的return语句要返回的值,那么返回值会改变吗?
答案:不会(实践在后面)

3,如果finally块中有return语句,那么函数会通过try块中的return返回还是通过try块中的return返回?

答案:通过finally块中的return返回。

实践:
写一个简单的类,包含两个方法

public class FinallyReturn {public static void main(String[] args) {int num = getNum();System.out.println("最后返回值是" + num);}private static int getNum(){int num = 4;try{num = num + 1;return num;}catch(Exception e) {e.printStackTrace();}finally{System.out.println("finall执行了!");num = num + 100;System.out.println("finall修改num为:" + num);}//这句在这里执行不到return 0;}
}

执行结果图:

由图可知:try块中有return的时候,finally还是会执行,
返回的结果是5,说明finally块修改了num的值,但是不影响最后的函数返回值。

再来看另外一种情况,和上面代码差不多,只是在finally里面加了一句return num

public class FinallyReturn {public static void main(String[] args) {int num = getNum();System.out.println("最后返回值是" + num);}private static int getNum(){int num = 4;try{num = num + 1;return num;}catch(Exception e) {e.printStackTrace();}finally{System.out.println("finall执行了!");num = num + 100;System.out.println("finall修改num为:" + num);return num;}}
}

来看结果

由图可知,如果try块与finally块中都有return的时候,函数通过finally块中的return语句返回。

try中的return和finally中的return相关推荐

  1. python中赋值语句的作用_python中return可以使用赋值语句吗?

    在python中,有各种不同类型的语句.一个python程序是由模块构成的;一个模块由一条或多条语句组成;每个语句由不同的表达式组成;表达式可以创建和操作对象.下面来看看python中的语句. 赋值语 ...

  2. break、continue和return在程序中的作用

    1.return 语句的作用 (1) return 从当前的方法中退出,返回到该调用的方法的语句处,继续执行(2) return 返回一个值给调用该方法的语句,返回值的数据类型必须与方法的声明中的返回 ...

  3. python if写在return 后面_python中return如何写

    python中return的用法 1.return语句就是把执行结果返回到调用的地方,并把程序的控制权一起返回 程序运行到所遇到的第一个return即返回(退出def块),不会再运行第二个return ...

  4. java catch中 return_JAVA中try、catch、finally带return的执行顺序总结

    try catch  以后只要没有抛出新异常或者return,代码会继续往下执行的. 异常处理中,try.catch.finally的执行顺序,大家都知道是按顺序执行的.即,如果try中没有异常,则顺 ...

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

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

  6. c++中带返回值函数没写return能通过编译但运行时会出现奇怪问题

    c++中带返回值函数没写return能通过编译但运行时会出现奇怪问题 例如: string myFunc(){ theLogics(); } 发现调用: myFunc(); 崩溃. 但调用: cout ...

  7. python返回值return用法_Python中return函数返回值代码实例用法

    本篇文章小编给大家分享一下Python中return函数返回值代码实例用法,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. return 添加返回值 r ...

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

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

  9. java的tey语句return了_Java中try、finally语句中有return时的执行情况

    在Java中当try.finally语句中包含return语句时,执行情况到底是怎样的,finally中的代码是否执行,大家众说纷纭,有的说会执行,有的说不会执行,到底哪种说法正确,现在通过下面的例子 ...

最新文章

  1. 关于Bulk加载模式
  2. got github
  3. [导入]体验Asp.Net Mvc Preview5(3)-探索ModelBinder的工作原理
  4. 用计算机算算术平方根顺序是ON然后是什么,第2课时用计算器求一个正数的算术平方根.ppt...
  5. 常用WebServices返回数据的4种方法比较
  6. Epson C1100报错“Service Req E511”的处理方法
  7. WPF——Expander控件(转)
  8. telnet 无法连接_Telnet 为什么不能以 root 身份登录系统?
  9. 做网站用UTF-8编码还是GB2312编码?
  10. 虚拟机中使linux系统分辨率变大
  11. 人脸识别的loss总结
  12. 去马赛克的频域方法(可抗混叠)
  13. 20210319_23期_心跳检测_Task02_数据探索性分析
  14. 海马玩android模拟器哪个好用,海马玩模拟器好用吗?用电脑怎么玩手机APP?海马玩模拟器评测-太平洋电脑网...
  15. java毕业生设计在线教育平台计算机源码+系统+mysql+调试部署+lw
  16. 淘宝天猫1688通过图片搜索到相关产品API(拍立淘以图搜图API接口调用)
  17. excel怎么不显示图表上显示为0%的项?
  18. Kotlin sealed class 的使用
  19. 第七章:项目成本管理 - (7.4 控制成本)
  20. FFmpeg任意文件读取漏洞分析

热门文章

  1. Twitter相关功能集成
  2. 解决umi 不是内部或外部命令,也不是可运行程序问题
  3. Excel职场小技巧:教你如何分页打印Excel表格
  4. 数据分析的心法、手法和利器
  5. b站弹幕姬python_B站弹幕姬()分析与开发(下篇)
  6. NPOI导出EXCEL 打印设置分页及打印标题
  7. 第十七届“振兴杯”全国青年 职业技能大赛——计算机程序设计员(云计算平台与运维)参赛回顾与总结
  8. 群晖网络不通_网络菜鸟入手Synology群晖 DS218+,求问网络安装环境几个问题?
  9. ABAP CDS编写
  10. C语言源代码系列-管理系统之电子英汉词典