首页 > 代码库 > CoreJava_不要在finally块中使用return关键字
CoreJava_不要在finally块中使用return关键字
今天下午在提交代码的时候看到了CheckList中的有一条,检查是否在finally块中使用了return语句。毕竟好几年了,忽然间居然忘记了,为什么?
before return in try section.
before return in finally section.
200
这才恍然大悟,原来Java的实现机制是在调用try代码块的return之前就会去执行finally里面的代码,这样finally的return就会结束当前的方法,返回一个错误的值,最好的实践还是,只有少量的资源需要释放的时候,才去使用finally,不要一股脑的扔到finally里面去处理,其他就扔给Java的垃圾回收机制处理好了。
赶紧动手,写了一个DEMO,恍然大悟:
public class TestFinally { public int getAddResult(int x,int y){ try{ System.out.println("before return in try section."); return x+y; }finally{ System.out.println("before return in finally section."); return x*y; } } public static void main(String[] args) { System.out.println(new TestFinally().getAddResult(10, 20)); } }上面程序的返回结果如下:
before return in try section.
before return in finally section.
200
这才恍然大悟,原来Java的实现机制是在调用try代码块的return之前就会去执行finally里面的代码,这样finally的return就会结束当前的方法,返回一个错误的值,最好的实践还是,只有少量的资源需要释放的时候,才去使用finally,不要一股脑的扔到finally里面去处理,其他就扔给Java的垃圾回收机制处理好了。
CoreJava_不要在finally块中使用return关键字
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。