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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡乃锋 中级黑马   /  2013-11-19 21:12  /  1475 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为啥放在try{}语句块里面 finally{}语句块内的还执行啊 ,虽然finally内必须执行但这不和 return 矛盾了嘛

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

5 个回复

倒序浏览
class  ExceptionDemo5
{
        public static void main(String[] args)
        {
                Demo d = new Demo();

                try
                {
                        int x = d.div(4,-1);
                        System.out.println("x="+x);

                }
                catch (FuShuException e)
                {
                        System.out.println(e.toString());
                        return;
                        //System.exit(0);//系统,退出。jvm结束。
                }
                finally
                {
                        System.out.println("finally");//finally中存放的是一定会被执行的代码。
                }


                System.out.println("over");
        }
}
复制代码
只有return,除了捕获异常以外,还会打印finally里面的语句,但是不打印over。
如果写System.exit(0);  finally里面就不会执行! 系统,退出。jvm结束。
回复 使用道具 举报
finally 里的语句是一定执行的 不管try里发没发生异常
回复 使用道具 举报
本帖最后由 Faner 于 2013-11-19 22:14 编辑
陈文杰 发表于 2013-11-19 21:37
class  ExceptionDemo5
{
        public static void main(String[] args)
回复错了 不好意思!  
回复 使用道具 举报
finally 里的内容肯定会执行到的  有一种情况例外 就是 在finally 之前 直接退出jvm 了  那就不执行finally  了   总之 其他的不管什么情况 都会执行到 finally 里面的代码  

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
finally和return没有必然的关系,finally是必须要执行的。不管return退出与否!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马