目录
一、概念
异常就是在程序执行过程中发送的不正常的行为
二、异常的体系结构
在顶层是一个Throwable类,然后有两个子类继承了他,分别是:Error类和EXception类
异常又分为受查异常和非受查异常,又叫编译时异常与运行时异常,顾名思义,编译时异常(受查)就是编译时的异常,运行时异常(非受查)也就是在程序运行时的异常
三、异常的处理
1、抛出异常
通过throw new 一个异常类,就可以在控制台抛出一个异常
1.抛出的异常必须是Exception类或者他的子类对象
2.如果抛出的是运行时异常则可以不用处理,直接交给jvm处理
3.如果抛出的是编译时异常则必须处理如果不处理编译不能通过
4.异常一旦抛出后续代码将不再执行
2、异常的处理
当出现异常时有以下的处理方式
1.throws声明异常
1.throws声明异常必须在方法后面
这是一个编译时异常,我们处理他时可以通过声明这个异常来处理
2.声明的异常必须是Exception类或者子类
3.方法内部如果出现多个异常,throws之后必须跟多个异常类型,之间用逗号隔开,如果抛出的异常具有父子类关系,直接声明父类就可以
3.调用声明抛出异常的方法时,必须对该异常进行处理,或者继续使用throws声明
处理之后就不会报错
2.try catch
try(需要申请资源的代码){
可能会存在异常的代码
}catch(可能会存在的异常类型 e){
对异常处理的代码
}finally{
不管异常有没有都会执行的代码
}
try后括号可以不同写
3、异常的处理流程
先执行try里面的代码,如果try里面的代码出现异常,则执行catch里的异常类型是否与try里的异常类型匹配 ,如果匹配就会执行catch里面的代码,如果没有匹配类型,就会向上传递到上层调用者。无论是否匹配异常类型finally里的代码都会执行(在方法结束前执行),要是上层调用者也没有处理异常就交给main如果也没有处理就交给JVM处理,此时程序终止
四、自定义异常
1、自定义运行时异常
自己定义的类继承RuntimeException类,然后重新写构造方法即可
2、自定义编译时异常
自己定义的类继承Exception类后重写构造方法