try...catch....finally执行顺序

例如:

int a=10;
try{
   a=20;
   //int c=325/0;
   return a;
}catch(Exception e){
   
}finally{
   a=100;
}
 a=32523;
 return a;

以上的代码:返回的结果是a等于20。

在try块中,a的值为20;在finally中a的值为100;但是最终的结果为什么返回的是20呢?

try…catch…finally执行顺序:
 1、正常的情况下,是执行try里面的语句,如果try中的语句块有异常的话,就访问catch然后访问finally。
 2、如果try中代码块中有异常,try语句块内异常代码的后面的代码块都不会执行了,也就是说int c=325/0之后在try块中的代码都不会执行了,而是跳到catch语句块,再是执行finally语句块。然后执行try…catch…fianlly后面的代码。
 3、如果try…中的代码块中有return语句,无异常情况下执行到return语句时,会去执行finally代码块。如果finally中改变了数据,如果finally中无return语句则不影响try块中的return对象的值,如果finally中有return,那程序将会直接返回finally中的return的值。
 4、如果一个方法中没有使用try…catch去处理异常,那整个方法运行到有异常的地方就会直接中断掉,之后的代码都不执行。
 5、如果把int c=325/0的注释去了的话,那结果就变成了32523。

finally中的代码块一定会执行到,不管你try和catch中是否有return语句,但是尤其要注意的一点是,无论try和catch块中做什么操作都不会影响他们语句块中retrun返会的值;除非finally中有return语句,那返回的值就是以finally中的为主了,但是一般不允许这样做。

注意:finally块中一般不执行其他操作,只对程序做收尾工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值