作者:
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