Try-catch-finally的return问题

结果是i=5 【catch中的i=3 再29行的i(catch的return无效),再33行i=i+2 再35行i++但是finally的return的表达式对基本数据类型是不起作用的,只起到return的作用

------------------------------------------------------------------------------------------------------------

Try-catch-finally的return问题

Try-catch-finally的return问题

 

这样就可以解释为啥是t is 3 finally还是5。因为finally那还是i=3+2;而29行的i还是用的catch里面的3(但是29行的i是新的局部引用了,引用了之前的值)

 

Try-catch-finally的return问题https://blog.csdn.net/kavensu/article/details/8067850推荐阅读

 

Try-catch-finally的return问题

 

https://www.cnblogs.com/superFish2016/p/6687549.html推荐阅读

总结以上测试:

1、finally语句总会执行

2、如果try、catch中有return语句,finally中没有return,那么在finally中修改除包装类型和静态变量全局变量以外的数据我认为就是基本的数据类型都不会对try、catch中返回的变量有任何的影响(包装类型、静态变量会改变、全局变量

3、尽量不要在finally中使用return语句,如果使用的话,会忽略try、catch中的返回语句但是try、catchreturn的运算都会执行,也会忽略try、catch中的异常,屏蔽了错误的发生

4、finally中避免再次抛出异常,一旦finally中发生异常,代码执行将会抛出finally中的异常信息,try、catch中的异常将被忽略

 

所以在实际项目中,finally常常是用来关闭流或者数据库资源的,并不额外做其他操作。

相关文章: