python return try catch,记录一下 try catch return 执行问题

先上连接:http://cmsblogs.com/?p=1574

class Test {

public int aaa() {

int x = 1;

try {

return ++x;

} catch (Exception e) {

} finally {

++x;

}

return x;

}

public static void main(String[] args) {

Test t = new Test();

int y = t.aaa();

System.out.println(y);

}

}

问题为:

如果在 try 语句块里使用 return 语句,那么 finally 语句块还会执行吗?(果你的答案是不会执行,请务必要看下去 ^_^)

如果执行,那么是怎样实现既执行 return 又执行 finally 的呢?(如果你的答案是不知道,请继续看下去!!)

上面的程序输出为什么是2?( 如果不知道,继续看下去)

在网上看到还有人还问“是先执行return还是先执行finally?”的

(个人觉得,如果知道finally会执行就可以得出是,先执行finally再执行return的。因为,如果先执行return,那么整个函数都跳出了,那么还怎么执行finally?^_^)

自己转述总结下用来以后学习

先说finally会不会执行,当然会了,因为tryCatch finally  中的finally定义为无论try代码块中怎么执行finally总是会执行的

执行顺序是这样的,当太try代码块中的代码执行到return的时候去执行finally里面的代码,此时return的内容会放在局部变量中,等finally代码执行完之后return的内容将会被重新释放出来,所以这里的y值是try代码块中return时保存在局部变量里面的那个值,当try和finally里都有return时,会忽略try的return,而使用finally的return

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值