异常概述
异常,见文知意,就是指代码在运行过程中出现的不可控逻辑。java异常根据严重程度,可分为错误(如jvm错误,内存错误等),和编码造成的异常(如除数为0、文件找不到等)。
下图为常见java异常类的继承图:
在java异常类中, Error是程序无法处理的错误,比如OutOfMemoryError、ThreadDeath等。这些异常发生时,Java虚拟机(JVM)终止自己的运行。
Exception是程序本身可以处理的异常,这种异常分两大类,运行时异常(继承RuntimeException的异常)和非运行时异常(直接继承Exception的类)。
异常的处理
1、使用try catch finally 捕获处理异常。
try{
//有可能发生异常的代码端
}catch(Exception){
//异常后会执行的代码块(自己的异常处理逻辑)
}finally{
//无论是否异常,都会执行的代码块(一般用于关闭io资源)
}
注意:try不能单独使用,必须和catch 或finally配合使用。且finally为可选项,catch 可以有多个。
使用try catch finally的时候,要避免在finally里使用return语句。在finally里使用return 语句会覆盖,方法原有的return值。
2、使用throws throw 向外继续抛出异常。
public void testThrows(string name)throws Exception{
if(name==NULL){
throw new NullPointException();
}
}
java异常常用处理原则
1、自定义统一异常,异常信息越详细越好,加入日志记录。
2、对于自己代码逻辑造成的异常,自己处理。
3、对于输入参数造成的异常,最好抛到外层,抛到外边的异常,最好为运行时异常。
4、就代码整洁性而言,对于检查时异常,最好自己处理,不要对外抛检查时异常。