首页 > 其他分享 >在finally中出现return会发生什么?

在finally中出现return会发生什么?

时间:2023-06-22 20:36:41浏览次数:47  
标签:语句 return 发生 try finally catch 执行

目录

看点:

当Java程序执行try块、catch块时遇到了return或throw语句,这两个语句都会导致该方法立即结束,但是系统执行这两个语句并不会结束该方法,而是去寻找该异常处理流程中是否包含finally块,如果没有finally块,程序立即执行return或throw语句,方法终止;

如果有finally块,系统立即开始执行finally块。只有当finally块执行完成后,系统才会再次跳回来执行try块、catch块里的return或throw语句;

如果finally块里也使用了return或throw等导致方法终止的语句,finally块已经终止了方法,系统将不会跳回去执行try块、catch块里的任何代码。

面试题:

23、try catch finally,try里有return,finally还执行么?
执行,并且finally的执行早于try里面的return

结论:
1、不管有木有出现异常,finally块中代码都会执行;
2、当try和catch中有return时,finally仍然会执行;
3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的
值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数
返回值是在finally执行前确定的;
4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。

标签:语句,return,发生,try,finally,catch,执行
From: https://www.cnblogs.com/javaxubo/p/17498267.html

相关文章

  • SVG 静止无功发生器 源码 dsp+FPGA主板
    SVG静止无功发生器源码dsp+FPGA主板ID:642000606316316265......
  • 基于Easy-Poi 的自定义 ArgumentResolver 和 ReturnValueHandler
    开发中常用到Excel的导入导出,为了方便快速的使用,让使用者使用Excel像使用JSON一样便捷(@RequestBody@ResponsBody)所以,是否可以自定义编写类似功能的注解 @RequestExcel 和@ResponseExcel  一、实现思路:根据Mvc的参数转换和返回值处理机制实现,excel相关工具......
  • apt安装软件时发生依赖破坏
    现象:root@kali:~#apt-getinstallfcitx正在读取软件包列表...完成正在分析软件包的依赖关系树正在读取状态信息...完成有一些软件包无法被安装。如果您用的是unstable发行版,这也许是因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件包尚......
  • 由电能高频率变化使物质发生衰变的机器
    由电能高频率变化使物质发生衰变的机器技术领域[url]:-|^|-::-|^|-:[/url]功能描述,该机器可以成功的使正常物质发生自发衰变,使质子,中子衰变成自旋为其他类型的夸克,背景技术[url]:-|^|-::-|^|-:[/url]产品描述,本设计公开了一种由电能高频率变化使物质发生衰变的机器。发明内......
  • AtCoder Beginner Contest 306 G Return to 1
    洛谷传送门AtCoder传送门考虑若干个能被\(1\)到达且能到达\(1\)的环,设它们的环长分别为\(a_1,a_2,...,a_k\)。那么我们现在要每个环走若干遍,使得步数不含除\(2\)或\(5\)以外的质因子。设第\(i\)个环走\(x_i\)遍,那么其实就是要求\(\sum\limits_{i=1}^ka_i......
  • 包含js代码的dom元素从页面上消失后发生了什么
    最近遇到了一个问题:有一个数据看板的页面运行了n天后突然页面崩溃了,爆出了outofmemory的错误。页面不复杂,几个图表定时更新数据,实在没明白为什么长时间运行后会outofmemory。在每次请求后使用console.log(window.performance.memory); 打印出页面的内存占用情况,然后就......
  • JAVA面试题解惑系列(四)——final、finally和finalize的区别
    关键字:java面试题finalfinallyfinalize作者:臧圩人(zangweiren)final、finally和finalize的区别是什么?这是一道再经典不过的面试题了,我们在各个公司的面试题中几乎都能看到它的身影。final、finally和finalize虽然长得像孪生三兄弟一样,但是它们的含义和用法却是......
  • java开发C语言编译器:jvm的return指令以及局部变量的操作
    jvm运行字节码时,代码的运行必须围绕两种数据结构,一种是堆栈,一种是队列,如果jvm执行某条指令时,该指令需要对数据进行操作,那么被操作的数据在指令执行前,必须要压倒堆栈上。如果堆栈上的数据需要暂时保持起来时,它就会被加载到局部变量队列上。java代码中,每个方法里面的局部变量包括函数......
  • java开发C语言编译器: return 语句的解释和执行
    在C语言程序中,很多函数并不是执行全部语句后,才从最底部返回的,大多数情况下,当某些条件成立时就可以通过return语句立即返回,而无需执行接下来的代码,本节,我们继续增强java开发的C语言解释器功能,使其能够处理return语句,完成本节代码后,我们的C语言解释器能够正常解析和执行下面的代码:in......
  • 在地址栏中输入URL,会发生什么
    1.浏览器的地址栏输入URL并按下回车。2.浏览器查找当前URL是否存在缓存,并比较缓存是否过期。3.DNS解析URL对应的IP。4.根据IP建立TCP连接(三次握手)。5.HTTP发起请求。6.服务器处理请求,浏览器接收HTTP响应。7.渲染页面,构建DOM树。8.关闭TCP连接(四次挥手)......