作者: liuwei1981  鏈接:http://liuwei1981.javaeye.com/blog/221434  發(fā)表時間: 2008年07月30日

聲明:本文系JavaEye網(wǎng)站發(fā)布的原創(chuàng)博客文章,未經(jīng)作者書面許可,嚴禁任何網(wǎng)站轉(zhuǎn)載本文,否則必將追究法律責任!

     下面的這個程序,它的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;
      }
   }
}

 

 

  編譯該程序,沒有報任何錯誤,運行該程序,發(fā)現(xiàn)它打印的是false;

 

   原因就在于,在一個try-finally語句中,finally語句總是在控制權(quán)離開try語句塊時執(zhí)行。無論try語句塊是正常結(jié)束的,還是意外結(jié)束的,情況都是一樣。

 

   總之,每一個finally語句都應(yīng)該正常結(jié)束,除非拋出不受檢查的異常。千萬不要用return,break,continue或throw來退出fianlly語句塊,并且千萬不要允許讓受檢查的異常傳播到finally語句塊之外

 


本文的討論也很精彩,瀏覽討論>>


JavaEye推薦




文章來源:http://liuwei1981.javaeye.com/blog/221434