黑马程序员技术交流社区

标题: 关于Exception是运行期异常还是编译期异常的问题 [打印本页]

作者: 未来的未来    时间: 2016-7-26 17:37
标题: 关于Exception是运行期异常还是编译期异常的问题
在学习刘意老师的27天基础视频时,在day19_Exception\itcast_06一节中,有如下例子(当时是讲throw和throws区别的)。但是我的问题是关于Exception的:此例子中的两个方法都是除数为0的异常,但是method抛出的是ArithmeticException运行期异常,而method2抛出的是Exception(视频中讲的是编译期异常)。查看API,知Exception是RuntimeException和编译期异常的父类。那为什么这里method2抛出的Exception就是编译期异常呢?为什么不是运行期异常?

Ps:编译期异常和运行期异常是按异常名区分的吗?如果是,那么它们的父类Exception默认是什么异常呢?
public class ExceptionDemo {
        public static void main(String[] args) {
                // method();
               
                try {
                        method2();
                } catch (Exception e) {
                        e.printStackTrace();
                }
        }
        public static void method() {
                int a = 10;
                int b = 0;
                if (b == 0) {
                        throw new ArithmeticException();//ArithmeticException运行期异常,方法上不需要声明
                } else {
                        System.out.println(a / b);
                }
        }
        public static void method2() throws Exception {//Exception编译期异常,调用者需要处理
                int a = 10;
                int b = 0;
                if (b == 0) {
                        throw new Exception();//Exception编译期异常,方法上需要声明
                } else {
                        System.out.println(a / b);
                }
        }
}
希望大神回答,不胜感激!
作者: 未来的未来    时间: 2016-7-27 00:41





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