详解finally中有无return语句时的执行情况

博客总结了finally块中存在或不存在return语句时,对于程序返回值的不同处理方式。当finally中有return时,返回finally中的值;若无return,基本数据类型返回try或catch的值,引用数据类型返回finally执行后的引用。文章通过12个示例详细阐述了各种情况,并提示可以通过查看编译后的class文件理解执行流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


   先来一个总结:如果明白的话,可以不用看后面的12个例子

         *   只要finally中有return语句,返回的就是finally中修改后的值;
         *   如果finally中没有的话基本数据类型返回是try中的值(无异常时)或catch中的值(有异常时),
     同一个引用数据类型的变量返回的是执行完finally语句之后的引用数据变量的值,不同的引用类型数据的变量返回的是try或catch中的引用数据类型的变量

 

     根据有无异常,返回类型(基本数据类型,同一个引用数据类型的变量,不同引用数据类型的变量),finally中有无return语句,可以得到12个例子,我们就从这12个例子着手,去分析finally中有无return语句时的执行情况;更详细的话,需要去看编译后的class文件,这里只简单提一下,可以javac 文件名.java 【编译成JVM能够读懂的字节码(相当于物理机器能识别运行的机器码)】,得到class文件,去分析这个汇编文件,里面会涉及到一些变量,你可以看到在try,catch中会对返回值进行暂存,然后先执行finally语句,再执行return语句。

       12个例子在下文代码中都有详细的注释,可以对照着来看,如有不懂,欢迎私戳 ^>^
 

/**
 * Author:Sophie
 * Created: 2019/9/2
 */

/**
 * try,catch,finally中有无return语句的执行顺序
 */
//我们知道有异常时会执行catch,finally块;无异常会执行try,catch块
//所以在这里我们从这两种大情况入手
public class Test {
    int a;
    public static v
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值