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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Good_Man 中级黑马   /  2015-11-29 21:10  /  968 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

异常块 finally中的内容一定对执行,
不管有没有出异常,,
请看 这种 情况

class c{
        public static void main(String[] args) {
                try{
                        int a=3,b=0;
                        System.out.println(a/b);
                }
                catch(ArithmeticException e){
                        System.out.println(e.toString());
                        return;
                }
                finally{
                        System.out.println("finally");
                }
                System.out.println("end");
        }
}

问, finally里面的内容会不会 被执行,
答案,会执行,
因为 ,不管有没异常finally里面的内容一定会被执行
          当有异常时,try catch finally后面的代码不会被执行,
          所以end  没有输出

每天 进步一点点,

7 个回复

倒序浏览
谢谢分享啊,finally都会被执行到
回复 使用道具 举报
看不懂啊。。。。
回复 使用道具 举报

加油哦,好好努力
回复 使用道具 举报
finally主要是作为关闭流的,为确保异常情况下,流也能被关闭
回复 使用道具 举报
xiaoziyk 发表于 2015-11-30 19:23
finally主要是作为关闭流的,为确保异常情况下,流也能被关闭

是的,如果没有流或者是资源的情况下,,finally可以省略不写哦
回复 使用道具 举报
本帖最后由 TG·小强 于 2015-12-3 11:03 编辑

1.有点小问题哦,只要被处理了,后面的代码肯定会执行的。之所以没有输出end,是因为return;跳出了函数。2.还有当执行了System.exit()时,finally也不会执行,这是JVM退出了。


回复 使用道具 举报
Good_Man 发表于 2015-12-3 09:46
是的,如果没有流或者是资源的情况下,,finally可以省略不写哦

如果真有这种情况那就太叼了,不用占用资源的,一般来说都会占用资源的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马