`
liuwei1981
  • 浏览: 756916 次
  • 性别: Icon_minigender_1
  • 来自: 太原
博客专栏
F8258633-f7e0-30b8-bd3a-a0836a5f4de5
Java编程Step-by...
浏览量:157272
社区版块
存档分类
最新评论

java解惑--优柔寡断(异常)

阅读更多

     下面的这个程序,它的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语句块之外

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics