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