什么异常
在程序运行中,发生了意外,背离了程序本身的意图,称为异常
异常分类
java通过 Throwable及其子类对异常进行描述
Throwable主要分为两个子类
- Error
程序无法处理的错误,程序运行过程中遇到严重的问题。一般来来说错误的产生与代码编写无关,是java虚拟机产生的错误。常见错误有
VirtualMachineError:虚拟机错误
OutMemoryError:内存溢出
ThreadDeath:线程锁死 - Exception
程序能够进行处理的异常。主要分为Unchecked Exception 和 checked Exception(非检查异常) 和 (检查异常)
Uncheck Exception 是编译器不要求强制处理的异常一般包含
RuntimeException:运行时异常
NullPointer Exception:空指针异常
ArrayIndexOutOfBoundsException :数组下标越界异常
ArithmeticException:算术异常
ClassCastException:类型转换异常
CheckedException 编译器在编译阶段要求必须处理的异常
IOException:文件操作异常
SQLException:数据库异常
异常处理
在java中异常处理主要分为两步:
-
抛出异常
java在运行的过程中出现异常,程序会生成一个异常对象抛出,异常对象主要包含,异常类型、异常出现时的程序状态等等。 -
捕获异常
java程序会捕捉异常,如果捕捉到异常,会选择匹配的处理器进行处理
java通过5个关键字来对异常进行处理
try、catch、finally、throw、throws
try{
//可能会出现异常的代码
}catch(E1 Exception){
//处理器1
}catch (E2 Exception) {
//处理器2
}finally {
//无论如何都会执行的代码
}
可以通过throws声明将要抛出何种类型的异常,通过throw将产生的异常抛出
如果一个方法可能会出现异常,但没有能力处理这种异常,可以在方法申明处用throws子句声明抛出异常
异常链
有时候我们会捕获一个异常后再抛出另外一个异常,将异常发生的原因一个传一个串起来,即把底层的异常信息传给上层,这样逐层抛出。