码迷,mamicode.com
首页 > 编程语言 > 详细

CoreJava_不要在finally块中使用return关键字

时间:2014-09-16 15:56:30      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:io   使用   java   ar   for   sp   cti   代码   on   

    今天下午在提交代码的时候看到了CheckList中的有一条,检查是否在finally块中使用了return语句。毕竟好几年了,忽然间居然忘记了,为什么?

    赶紧动手,写了一个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关键字

标签:io   使用   java   ar   for   sp   cti   代码   on   

原文地址:http://blog.csdn.net/ziwen00/article/details/39318317

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!