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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

在学习刘意老师的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);
                }
        }
}
希望大神回答,不胜感激!

1 个回复

倒序浏览
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马