异常
-
异常:
程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。
-
异常分类:
编译时异常 运行时异常
-
异常捕获:
try…cath…finally
-
异常的抛出:
throw
-
制造异常:
throw
-
异常体系 : Throwable / \ Error Exception / \ Runtime Checked Exception Exception
-
Error: 错误,一般是由虚拟机生成脱出的,不由程序猿控制
Exception:异常
RuntimeException 运行时异常:
发生在程序运行期间,一旦遇到下面代码无法执行,可以通过简单的增强程序的健壮性的代码处理 ->(if)
CheckedException 编译时异常|检查时异常,发生在程序编译时异常不处理,程序无法运行。
常见的运行时异常:
NullPointerException 空指针异常
ClassCastException 类型转换异常
NegativeArraySizeException 数组长度负数异常
ArrayIndexOutOfBoundsException 数组索引越界
ArithmeticException 数字异常
运行时异常都会直接或简洁的继承自RuntimeException
编译时异常:
在编译时就出现的异常,就必须要解决
异常处理方案:
所有的异常都可以通过异常处理方案处理
编译时异常只能通过异常处理方案
运行时异常可以通过简单增强程序健壮性代码解决,也可以通过异常处理方案
异常抛出:throws
抛出到方法上:谁调用谁处理
异常的捕获: 捕获异常,提供异常的代码 alt + enter alt CTRL+ t
try{
有可能出现的异常的代码;
}catch(异常类型A e){
遇到当前类形的异常对应的异常处理代码
}finally{
一定会执行的代码
}
注意:
try中一旦遇到异常,try中的代码无法继续执行,直接判断能被哪一个catch捕获,
从上到下判断,如果所有的catch都不能捕获,程序直接结束,这个异常没有处理。
try中如果执行没有遇到异常,就不会判断catch的捕获
一个try后面可以跟1-n个catch
大范围类型的catch捕获放在后面,小返回的放前面
finally的代码无论try中是否出现异常 一定会执行会finally(做资源的关闭)
自定义异常:
自定义异常必须直接或者简洁的继承自Exception
运行时异常必须直接或间接的继承RuntimeException
throw制造异常
对于编译型异常和运行时异常:关系编译型是异常是在编译时就会报错的,我们需要认为的处理或是抛给上一层处理(谁调用谁处理),但运行时异常,只有在运行时才又可能会出错,我们可以捕获异常或者是增强程序健壮性(让代码运行时不会出错或是给出解决方案)。