黑马程序员技术交流社区

标题: 异常问题,求解决 [打印本页]

作者: 多此一举    时间: 2014-7-4 20:26
标题: 异常问题,求解决
class Demo {
        int div(int a, int b) {
                if (b == 0) {
                        throw new ArithmeticException("被零除了");
                }
                return a / b;
        }
}

public class ExceptionDemo {

        public static void main(String[] args) {
                Demo d = new Demo();
                try {
                        int num = d.div(4, 0);
                        System.out.println(num);
                } catch (Exception e) {
                        System.out.println(e.toString());
                }

                System.out.println("over");
        }

}
毕老师说RuntimeException及其子类不用声明直接抛出,程序停止不再执行,但是这里为什么能输出"over",而将try catch去掉后就没有输出"over",直接中断程序。
作者: LeaonButcher    时间: 2014-7-4 21:30
因为你在try-catch中捕获了异常,系统认为你已经将异常给解决了,try块后的语句照样被执行。
Exception 是异常类的基类,运行时异常也是可以被Exception捕获并处理的。
作者: 莞漂族    时间: 2014-7-4 21:53
程序从main方法开始执行,先创建Demo类的实例对象,接着通过对象调用Demo类的div方法,由于做了try/catch处理,就告诉了虚拟机已经获取到异常并处理了,不用停止程序,这样先执行 System.out.println(e.toString());打印错误信息,然后打印over;没有try/catch处理的话,在调用div(4/0)时就出异常了,程序会立刻停掉,将异常抛出,执行不到打印over的语句,所有没有输出“over”。
作者: EarlyHeart    时间: 2014-7-4 23:10
异常捕获之后下面的语句会继续运行





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