java基础之-try-catch-finally执行跳转返回逻辑验证

1 篇文章 0 订阅
1 篇文章 0 订阅

摘要

本段代码块主要验证try,catch,finally的执行跳转返回逻辑

try返回值,finally只赋值,不返回值

    /**
     * <p>
     * 如果finally不返回result,只是赋值(i="set in finally"),
     * 只会修改到栈帧中的局部变量result,
     * 不会修改到虚拟机栈返回值,此时虚拟机返回值位置存储的还是result="set in try"。
     * </p>
     * 执行返回结果:“set in try”
     * @return
     */
    private String testReturnInTry() {
        String result = "init";
        try{
            result = "set in try";
            return result;
        }catch (Exception e){
            result = "set in catch";
            return result;
        }finally {
            result = "set in finally";
        }
    }

catch返回值,finally只赋值,不返回值

    /**
     * <p>
     * 如果finally不返回result,只是赋值(i="set in finally"),只会修改到栈帧中的局部变量result,
     * 不会修改到虚拟机栈返回值,此时虚拟机返回值位置存储的是result="set in catch"。
     * </p>
     * 执行返回结果:"set in catch"
     * @return
     */
    private String testReturnInCatch() {
        String result = "init";
        try{
            result = "set in try";
            throw new RuntimeException();
        }catch (Exception e){
            result = "set in catch";
            return result;
        }finally {
            result = "set in finally";
        }
    }

finally返回值

    /**
     * <p>
     * 如果finally返回result,不仅会修改到栈帧中的局部变量result,
     * 还会把最新的result值更新到虚拟机栈返回值存储位置。
     * </p>
     * 执行返回结果:"set in finally"
     * @return
     */
    private String testReturnInFinally() {
        String result = "init";
        try{
            result = "set in try";
            //A:执行效果同B
            return result;
            //B:执行效果同A
//            throw new RuntimeException();
        }catch (Exception e){
            result = "set in catch";
            return result;
        }finally {
            result = "set in finally";
            return result;
        }
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值