try中有return,finally中的code会不会执行,执行是在return前还是后?

注:
1.当finally中没有return,但是try中有return时,执行顺序是try--finally--return,但是finally中不会修改在try中的值,在try中的值会保存到函数栈中,继续执行finally,执行完后,再从栈中取出返回;代码如下
public class FinallyTest  
{	public static void main(String[] args) {
	      System.out.println(new FinallyTest().test());;
	}
      static int test(){
		int x = 1;
	try{
		x++;
		return x;}
	finally{
		++x;
	}}}
 
在try语句中,在执行return语句时,要返回的结果已经准备好了,就在此时,程序转到finally执行了。

在转去之前,try中先把要返回的结果存放到不同于x的局部变量中去,执行完finally之后,在从中取出返回结果,
因此,即使finally中对变量x进行了改变,但是不会影响返回结果。
它应该使用栈保存返回值。2.当finally中和try中都有return时,执行顺序是先执行try中,将要返回的结果保存到函数栈中,在执行finally中,此时finally中会返回在该快中的值,而不会执行try中的return语句,代码如下:
public  class Test
{
 
public static void main(String[]
args) {
System.out.println(new Test().test());
}
int test(){
try{
return func1();}
finally{
return func2();}}
int func1(){
System.out.println(“func1”);
return 1;}
int func2(){
System.out.println(“func2”);
return 2;}
-----------执行结果----------------- 
func1
func2

 

2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值