3.10 异常
异常:运行时期发生的不正常情况
java通过面向对象的思想将问题分装成了对象,用异常类对其进行描述
throwable:无论是error,还是exception,问题发生就应该可以抛出,Throwable及其所有的子类都具有可抛性
throws,throw,凡是可以被这两个关键字所操作的类和对象都具备可抛性
throws使用在函数上,抛出的是异常类,可以抛出多个,用逗号隔开
throw使用在函数内,抛出的是异常对象,只能一个
3.10.1Error
一般不可处理,是由jvm抛出的严重性问题,一般不针对性处理,直接修改程序
3.10.2Exception
可以处理
!自定义异常,如果要让一个类称为异常类,必须要继承异常体系,只有称为异常体系的子类才有资格具有可抛性
异常的分类:
a)编译时被检测异常:只要是Exception和其子类都是,除了特殊子类RuntimeException体系
b)编译时不检测异常(运行时异常):RuntimeException及其子类
3.10.3异常捕捉
对异常进行针对性处理的方式
try
{
//需要被检测异常的代码
}
catch(异常类 变量)//该变量用于接收发生的异常对象
{
//处理异常的代码
//变量.printStackTrace();jvm默认的异常处理机制就是调用异常对象的这个方法
}
finally//通常用于关闭(释放资源)
{
//一定会被执行的代码
}
异常的注意事项:
a)多catch父类的catch放在最下面,否则编译失败
b)子类覆盖父类方法时,父类的方法如果抛出了异常,那么子类的方法只能抛出父类的异常或者该异常的子类
c)如果父类抛出多个异常,那么子类只能抛出父类异常的子集
d)父类没有抛出异常,子类只能处理,不能throws