黑马程序员技术交流社区

标题: 异常之finally [打印本页]

作者: Good_Man    时间: 2015-11-29 21:10
标题: 异常之finally
异常块 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  没有输出

每天 进步一点点,
作者: 洛荣神川    时间: 2015-11-29 22:55
谢谢分享啊,finally都会被执行到
作者: ^_^笨和尚^_^    时间: 2015-11-29 23:33
看不懂啊。。。。
作者: Good_Man    时间: 2015-11-30 15:30
^_^笨和尚^_^ 发表于 2015-11-29 23:33
看不懂啊。。。。

加油哦,好好努力
作者: xiaoziyk    时间: 2015-11-30 19:23
finally主要是作为关闭流的,为确保异常情况下,流也能被关闭
作者: Good_Man    时间: 2015-12-3 09:46
xiaoziyk 发表于 2015-11-30 19:23
finally主要是作为关闭流的,为确保异常情况下,流也能被关闭

是的,如果没有流或者是资源的情况下,,finally可以省略不写哦
作者: TG·小强    时间: 2015-12-3 11:01
本帖最后由 TG·小强 于 2015-12-3 11:03 编辑

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



作者: TG·小强    时间: 2015-12-3 11:07
Good_Man 发表于 2015-12-3 09:46
是的,如果没有流或者是资源的情况下,,finally可以省略不写哦

如果真有这种情况那就太叼了,不用占用资源的,一般来说都会占用资源的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2