码迷,mamicode.com
首页 > 系统相关 > 详细

eclipse黄色警告(finally block does not complete normally) ,不建议在finally中使用return语句

时间:2014-08-04 18:02:37      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:finally块中使用return的问题   try和catch和finally的使用   

在eclipse中编写如下的代码,eclipse会给出黄色告警:finally block does not complete normally。

public class Test
{
    public static void main(String[] args)
    {
        System.out.println(m1(null));
    }

    public static String m1(String name)
    {
        try
        {
            name.length();
        }
        finally
        {
            return name + "_test";
        }
    }
}

这段代码运行结果是:控制台打印null_test,不会抛出空指针异常(被JVM吞掉了)。程序出现了允许异常,但是却被JVM私吞,显然这是不好的做法。不建议在finally块中使用return语句的原因如下:

1、finally块中的return语句会覆盖前面的return语句(try块、catch块中的return语句),会导致很难判断方法的返回结果,容易得出错误的结论。

2、如果finally块中包含了return语句,即使前面的try或catch块抛出了异常,则调用该方法的语句也不会获得catch块重新抛出的异常,而是会得到finally块的返回值,并且不会捕获异常。

 

总之在finally中使用return是不好的编程实践,应该避免使用。关于try-catch-finally中使用return的返回值问题,可以看下http://www.cnblogs.com/aigongsi/archive/2012/04/19/2457735.html这篇博客,列举了很多种情况,分析也很详细。就算是有经验的程序员,也可能会错误地判断方法返回结果,不信你可以去试试。

eclipse黄色警告(finally block does not complete normally) ,不建议在finally中使用return语句,布布扣,bubuko.com

eclipse黄色警告(finally block does not complete normally) ,不建议在finally中使用return语句

标签:finally块中使用return的问题   try和catch和finally的使用   

原文地址:http://blog.csdn.net/aitangyong/article/details/38369113

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