异常类的继承结构
Exception : 一般标识的是程序中出现的问题,可以直接使用try---catch处理。
Error : 一般值得是JVM错误,程序中无法处理。
检测异常类需要在throws后面罗列,但是不检测异常类不需要在throws后面罗列。
抛出异常,等价于生成该异常类的对象,作为参数传递给catch(xxxException e);多个catch()的话,就通过参数来判断:
1,产生的异常对象的类===相同===参数e的类。
2,产生的异常对象的类===继承===参数e的类。
3,产生的异常对象的类===实现===参数e的类(参数e的类是接口)。
try{
try{
throw new Exception("抛出Exception类的异常对象");
}catch(RuntimeException runE){
System.out.println("抛出RuntimeException类的异常对象,而Exception是RuntimeException的父类(根据第2点),所以这里无法处理Exception的异常");
}
}catch(Exception e){
System.out.println("抛出Exception类的异常对象,内部无法处理,将交给外部处理");
}
1,任何类中的一个方法必须罗列它可能抛出的所有检测异常类的类名。
2,如果父类中的一个方法没有罗列任何检测异常类的类名,那么它的子类所覆盖父类的方法也不能罗列任何检测异常类的类名。
3,如果父类中的一个方法罗列了n个检测异常类的类名,那么它的子类所覆盖父类的方法也必须和父类罗列相同的检测异常类的类名。