作者:
liuwei1981
链接:
http://liuwei1981.javaeye.com/blog/221434
发表时间: 2008年07月30日
声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!
下面的这个程序,它的decision方法将返回一个true,但它也返回false,那么,它打印的到底是什么呢?它是合法的么?
public calss Indecisive{
public static void main(String[] args){
System.out.println(decision());
}
static boolean decision(){
try{
return true;
}finally{
return false;
}
}
}
编译该程序,没有报任何错误,运行该程序,发现它打印的是false;
原因就在于,在一个try-finally语句中,finally语句总是在控制权离开try语句块时执行。无论try语句块是正常结束的,还是意外结束的,情况都是一样。
总之,每一个finally语句都应该正常结束,除非抛出不受检查的异常。千万不要用return,break,continue或throw来退出fianlly语句块,并且千万不要允许让受检查的异常传播到finally语句块之外。
本文的讨论也很精彩,浏览讨论>>
JavaEye推荐
文章来源:
http://liuwei1981.javaeye.com/blog/221434