finally解析

17 篇文章 0 订阅
2 篇文章 0 订阅
finally解析:

public static int inc() {
int i;
try{
i = 2;
return i;
}catch(Exception e) {
i = 3;
return i;
}finally {
i = 4;
}
}

该方法返回值:

[u][color=red]正常情况返回2,异常情况下返回3,未知异常不返回任何值[/color][/u]

注意:
1、方法本身的执行顺序是try{} - finally{} - return
2、由于虚拟机栈的执行机制,具体执行是:
执行 i = 2
把i值保存到栈(方法调用链)对应栈帧(一般对应一个方法)的本地变量表最后一个Slot([u][color=red]总是把return前面的,需要返回的值,保存到最后一个Slot[/color][/u],这里值是2)
执行 i = 4
[u][color=red]取回本地变量表最后一个Slot值[/color][/u],放置到操作栈顶(这里值是2),准备返回
返回该值(栈顶值)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值