Throwable分成Error(错误)和Exception(异常)
Exception异常
java中程序一旦遇到异常,程序无法向下执行
Error:错误,一般有虚拟机生成并脱出的,不需要程序员关注
Exception 异常
检查时异常|编译时异常;编译期间遇到的异常,如果不处理,程序无法运行
运行时异常:运行期间遇到的异常通过增加程序健壮性的代码可以解决if
常见的运行时异常:
1.空指针异常 NullPointerException
2.数组索引越界 ArrayIndexOutOfBoundsException
3.类型转换越界 ClassCastException
4.数学异常 ArithmeticException
5.格式转换异常 NumberFormatException
异常处理方式:
1.抛出异常 throws 异常类型
2.异常捕获
try...catch
try{
有可能出现异常的代码;
}catch(FileNotFoundException e){
遇到异常后执行的代码;
}catch(NullPointerException e){
遇到异常执行的代码;
}.....
catch(Exception e){//-->接盘侠 //Exception e = new ClassCastException();
} finally{
无论try中是否遇到异常,结束之前都会执行finally中的代码
}
注意:
无论是编译时异常还是运行时异常都可以通过两种解决方案处理
但是编译时异常只能通过两种解决方案处理
而运行时异常可以通过两种解决方案处理,也可以增强程序健壮性if
一个try后面可以接1-n个catch
如果try中的代码一旦遇到异常try中的代码不会执行,会直接判断catch,多个catch之间从上到下判断,如果找到对应的catch执行{}中的代码
如果存在多个catch,大范围类型的捕获放在最后
一般在finally中会定义资源的关闭等代码
自定义异常
自定义的异常类型需要直接或间接的继承自Exception
自定义的异常类型为运行时异常需要直接或间接的继承自RuntimeException
throw 制造异常