Java异常类层次结构图:
Error(错误):虚拟机错误,无法依靠修改程序解决的错误
内存溢出:OutOfmemoryError
栈溢出:StackOverFlowError
Exception(异常):
算术异常类:ArithmeticExecption
空指针异常类:NullPointerException(当对象为null时,再调用这个对象的属性或方法,会出现该异常)
类型强制转换异常:ClassCastException
数组负下标异常:NegativeArrayException
数组下标越界异常:ArrayIndexOutOfBoundsException
违背安全原则异常:SecturityException
文件已结束异常:EOFException
文件未找到异常:FileNotFoundException
字符串转换为数字异常:NumberFormatException
操作数据库异常:SQLException
输入输出异常:IOException
方法未找到异常:NoSuchMethodException
异常处理
1、使用try catch处理
try{
语句1;
语句2;
}catch(Exception e){
语句3;
}
语句4;
如果try中有异常,执行语句3,再执行语句4
如果try中没异常,执行语句1、2,语句4
注意:
一个try可以有多个catch,但是catch括号里异常类型只能是 平级 或 从小到大
catch后面的处理机制里必须写东西,不能为空
2、使用throws抛出异常
public void 方法名() throws Exception{
方法体;
throw new Exception(异常提示);
}
throw和throws的使用位置,作用是什么?
1、throw作用:throw是指抛出的一个具体的异常类型。位置:抛出异常的方法中,函数体内部
2、throws作用:throws是方法可能抛出异常的声明。位置:用在声明方法时括号后面,表示该方法可能要抛出异常
finally
无论是否异常,代码都会得到执行。
一般用于资源的释放、清理。
有finally和return时。如果return有返回值则return先执行,finally后执行。无返回值时,finally先执行,return后执行。
搭配:(try / catch / finally)或(try / finally)