A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 唐巍 黑马帝   /  2012-3-11 03:52  /  1457 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

finally代码块中的代码是不是一定会被执行?有finally代码块中的代码不会执行的情况吗?

3 个回复

倒序浏览
本帖最后由 李明伟 于 2012-3-11 07:49 编辑

finally一般是与try   catch一起使用的,先执行try内的语句,如果异常。就执行catch,最后执行finally中的代码,但是如果finally内也使用了try  catch,如果发生了异常则不会全部执行finally内的语句,还有就是如果在finally执行之前程序就退出啦,例如执行啦,System.exit(0),或者是程序进入了死循环,都不会执行finally语句
回复 使用道具 举报
通常情况下,finally代码块是会被执行的,但是,
如果程序永远也不会运行到那里去,finally的代码就不会被执行
回复 使用道具 举报
楼上说的很详细了。我就附上一段finally块没有执行的代码吧。
  1. class Test
  2. {
  3.     public static void main(String[] sg)
  4. {
  5.       try{
  6.         throw new Exception("抛出异常");
  7.        }
  8.       catch(Exception e){
  9.       System.exit(0);
  10.        }
  11.        finally{
  12.        System.out.println("finally代码块")
  13.        }
  14. }
  15. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马