首页 > 代码库 > eclipse黄色警告(finally block does not complete normally) ,不建议在finally中使用return语句
eclipse黄色警告(finally block does not complete normally) ,不建议在finally中使用return语句
在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这篇博客,列举了很多种情况,分析也很详细。就算是有经验的程序员,也可能会错误地判断方法返回结果,不信你可以去试试。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。