1.异常:代码运行的时候发生了错误。
异常处理的目的是为了提高系统的健壮性
try{
}catch(异常类型 变量){
}
2.异常类型(Throwable)
Throwable异常的代表
/ \
Error Exception Error : 错误 ,一般不是代码的执行的错误,一些不可逆转的错误是Error JVM死掉了 停电了
Exception : 可以捕获可以处理 Exception(异常) : 是一切异常的父类 / \
RuntimeException 其他异常
3.RuntimeException(运行时异常)
子类:
NullPointerException(空指针异常)
IndexOutOfBoundsException(子类ArrayIndexOutOfBoundsException, StringIndexOutOfBoundsException )
ArithmeticException(数学操作异常:除0异常)
ClassCastException(类型强转异常)
java.lang.IllegalArgumentException 非法参数异常
4.异常捕获
运行时异常: 可以不捕获,即使不捕获代码也不会提示报错。 所以运行时异常你可以捕获也可以不捕获。
运行时异常是在执行程序的时候出现异常,然后自动创建对应的异常类型抛出去。
程序出现异常-->程序自动创建异常对象--->程序自动抛出异常对象 --- > catch捕获对应的异常对象
5.自定义异常的抛出与捕获
运行时异常一般是自动抛出的。
自己抛出异常: 如果抛出的是Exception的子类而不是RuntimeException类型就是必须检查的异常
如果抛出的是RuntimeException类型就是非必须检查异常
异常的两个关键字:throw throws
throw 是用来产生异常对象。
throws 是用来抛出异常给上层调用者,用于方法的后面。
注意:
非必须检查异常可以捕获也可以不捕获
检查异常:
从异常产生以后必须捕获,如果当前方法不想捕获,那就一定要通过throws抛出去给上层方法
同样上层方法收到必须检查异常也必须处理。
6.finally关键字
无论什么情况最终都要执行的代码块。
即使try中有return最终也会执行finally
注意:finally中定义return没有意义,会覆盖合法的return语句。
finally的作用和意义:
finally是对应try的程序结束的时候才会执行
所以finally一般用于在程序结束以后释放程序使用的资源。节约内存