2022-12-23
一、异常体系树
image.png二、Error错误
描述的是错误,比如主板烧坏了、网络断了等程序员无法处理的问题
三、Exception异常
描述的是程序上的问题,程序员可以通过严谨的编码习惯和处理,防止异常的发生
四、检查性异常
需要指出,检查性异常虽然是在编码过程中报红,但是不是语法错误,需要处理
五、运行时异常
顾名思义,程序编码过程中不会提示,需要到运行后才能看到
六、处理异常的方式
1、在方法体中处理
try catch
2、在方法声明处处理
throws
七、try catch
1、try catch处理时,异常在自己方法内部就被处理了,调用这个方法的地方压根感知不到异常的存在
2、try后边可以接很多catch,要求不能重复、子类异常要写到父类异常前边
3、建议最后放一个Exception用于兜底
4、执行的时候,会从上到下选符合异常的类型,找到后进去执行对应的catch块中的内容
八、throws
1、throws处理时,谁调用throws所在的方法,谁就会感知到异常的存在,因此也需要处理,可以选择try catch或者是throws,当然,选择throws,下一个调用它的方法,也需要处理
2、一般认为throws是一种不太负责的处理方式,因为相当于自己没处理,而把异常抛出给了调用它的方法,因此在主方法中不建议throws,这会把异常抛给jvm,建议在主方法中就try catch
九、异常发生时jvm的作用
异常发生前语句正常执行,当异常发生,jvm会自动抛出一个对应类型的异常对象并打印异常信息,同时停止执行程序,这样做是为了系统安全因此异常后的语句不会执行
十、try catch的几种状态
try{
①
System.out.println(1/0);
②
}catch(Exception e){
③
}
④
异常种类对,①③④可以执行
try{
①
System.out.println(1/0);
②
}catch(IndexOutOfBoundsException e){
③
}
④
异常种类不对,只有①
try{
①
System.out.println(1/0);
②
}catch(IndexOutOfBoundsException e){
③
}finally{
⑤
}
④
try{
①
System.out.println(1/0);
②
}catch(Exception e){
③
}finally{
⑤
}
④
finally块不论异常种类对不对都会被执行,因此finally经常应用于,程序执行后必要的操作,比如资源释放
也可以不写catch,try后直接跟finally,比如:
try{
①
System.out.println(1/0);
②
}finally{
⑤
}
④
十一、Exception常用方法
构造方法
getCause()
getMessage()
getStackTrace()
printStackTrace()
十二、
final、finally、fianlize区别
fianl可以修饰量、方法、类
finally 异常处理块中最后总要被执行的
finalize 垃圾回收机制
十三、throw
手动引发异常
throw 挑事
throws 平事