首页 > 其他分享 >try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

时间:2024-07-19 15:00:18浏览次数:12  
标签:语句 返回 code return int try finally 执行

在Java编程中,可能会遇到在try块中包含有返回语句的情况。那么紧随其后的finally块中的代码是否会被执行呢?在这种情况下,finally块中的代码会在返回语句执行前执行还是执行后呢?让我们来探讨一下这个问题。

首先,让我们回顾一下Java中try-catch-finally语句块的执行顺序。在try块中的代码执行完毕后,无论是否发生异常,finally块中的代码都会被执行。这是为了确保资源得到正确地释放,比如关闭文件或数据库连接等操作。但是在try块中包含有返回语句时,情况就会有所不同。

当try块中存在返回语句时,程序会立刻返回结果,并且不会执行try块中返回语句后的任何代码。这意味着在try块中的返回语句执行后,finally块中的代码仍然会被执行。所以答案是finally块中的代码会在返回语句执行后被执行。

让我们通过一个简单的示例来演示这一点:

    public static void main(String[] args) {
        int test = test(3,5);
        System.out.println(test);
    }

    public static int test(int x, int y){
        int result = x;
        try{
            result = x + y;
            return result;
        }finally{
            result = x - y;
        }
    }

运行结果如图:

运行结果为8而不是-2,说明了finally中的代码在return之后执行

总的来说,无论try块中是否存在返回语句,finally块中的代码都会在返回语句执行后得到执行。这是Java语言中保证资源释放和清理的一种机制。希望这篇文章能够帮助你更好地理解在Java中try块和finally块的执行顺序。如果你有任何疑问或者想要了解更多相关知识,欢迎留言讨论。

标签:语句,返回,code,return,int,try,finally,执行
From: https://blog.csdn.net/m0_65155906/article/details/140531895

相关文章

  • EeayDecode:解码合约的自定义错误、事件和函数参数与返回值
    官网:easydecode.dev还在为解码合约自定义错误事件和函数参数与返回值而苦恼吗?快试试easydecode吧!只需提供合约ABI即可快速、方便的解码合约的自定义错误、事件和函数参数与返回值。1.解码Event将Event的Topics(字符串数组,使用,分割)和Data填入输入框,点击“DecodeE......
  • LeetCode 363. 矩形区域不超过 K 的最大数值和
    363.矩形区域不超过K的最大数值和给你一个 mxn 的矩阵 matrix 和一个整数 k ,找出并返回矩阵内部矩形区域的不超过 k 的最大数值和。题目数据保证总会存在一个数值和不超过 k 的矩形区域。示例1:输入:matrix=[[1,0,1],[0,-2,3]],k=2输出:2解释:蓝色边......
  • [LeetCode] 1380. Lucky Numbers in a Matrix
    Givenanmxnmatrixofdistinctnumbers,returnallluckynumbersinthematrixinanyorder.Aluckynumberisanelementofthematrixsuchthatitistheminimumelementinitsrowandmaximuminitscolumn.Example1:Input:matrix=[[3,7,8],[9,11,......
  • python之初识函数(函数的使用、可变长度参数*args和**kwargs、return的作用),了解函数的
    文章目录前言1、函数1.1函数的本质1.2定义函数1.3调用函数1.4深入解析函数1.5定义函数的完整语法1.5.1参数1.5.1.1参数的分类(位置、默认、关键字、可变长度)1.5.1.2参数的书写顺序1.5.2关键字:return前言本篇文章的目的是带领大家从零开始认识函数,作为函数......
  • VS Code 开发工具的基本使用
    VSCode开发工具的基本使用VSCode(VisualStudioCode)是微软开发的一款免费、开源的代码编辑器,它支持多种操作系统,包括Windows、macOS和Linux。VSCode因其轻量级、快速、功能强大以及丰富的插件生态系统而广受开发者喜爱,特别是在前端开发领域,VSCode提供了许多便捷的工具和插件......
  • # vue 使用代码编辑器插件 vue-codemirror
    vue使用代码编辑器插件vue-codemirror之前用过一次,当时用的一知半解的,所以也没有成文,前几天又因为项目有需求,所以说有用了一次,当然,依旧是一知半解,但是还是稍微写一下子吧!万一以后用到,不用满网找资料了,个人学习记录,仅供参考,切勿尽信!vue-codemirror说明首先我的项目是vue2......
  • 算法篇 滑动窗口 leetCode 水果成篮
    水果成蓝1.题目描述2.图形分析2.1原理解释2.2怎么想出使用滑动窗口2.3图形分析3.代码演示1.题目描述2.图形分析2.1原理解释2.2怎么想出使用滑动窗口2.3图形分析3.代码演示......
  • 网站开发:使用VScode安装yarn包和运行前端项目
    一、首先打开PowerShell-管理员身份运行ISE输入命令:set-ExecutionPolicyRemoteSigned选择“全是”,表示允许在本地计算机上运行由本地用户创建的脚本,没有报错就行了二、接着打开VScode集成终端输入npminstall-gyarn再次输入以下命令,无报错说明yarn安装成功ya......
  • C#实现HttpUtility.UrlEncode输出大写字母
     在c#中,HttpUtility.UrlEncode("www+mzwu+com")编码结果为www%2bmzwu%2bcom,在和Java开发的平台做对接的时候,对方用用url编码后再对其进行MD5加密,url编码之后的字符串为大(www%2Bmzwu%2Bcom)写这样加密出来的字符串就.net平台的不匹配,以下供上方法就是解决HttpUtility.UrlEncode......
  • Educational Codeforces Round 139 (Rated for Div. 2)
    A.ExtremelyRound----------------------------------题解-------------------------------------因为数据范围只有1e6,我们只需要预处理出来1-1e6每个每个数包含多少个极圆整数就行了,然后t次查询就可以。这种预处理查询是面对多次询问时应该首先想到的。点击查看代码#incl......