异常
程序运行时可能出现的一些错误
异常是一个程序执行期间发生的事件,中断了正在执行的正常指令流
处理程序异常错误
错误
异常产生后不做任何处理就会被终止
捕捉异常
语法:
try{
}catch(Exceptiontype e){
//对Exceptiontype的处理
}finally{
}
try-catch语句块
将可能出现的异常进行异常处理
finally语句块
完整异常处理语句必须包括finally,无论程序有无异常发生,无论try-catch是否执行完毕,都会执行finally
有四种情况finally不会执行:
1.finally语句块发生了异常
2.前面使用了System.exit()退出程序
3.程序所在线程死亡
4.关闭CPU
Java常见异常
异常类 | 说明 |
---|---|
ClassCastException | 类型转换异常 |
ClassNotFoundException | 未找到相应类 |
ArithmeticException | 算术异常 |
ArrayIndexOutOfBoundsException | 数组下标越界 |
ArrayStoreException | 数组包含不兼容值 |
SQLException | 操作数据库异常 |
NullPointException | 空指针 |
NoSuchFieldException | 字段未找到 |
NoSuchMethodException | 方法未找到 |
NumberFormatException | 字符串转为数字抛出 |
NegativeArraySizeException | 数组长度为负 |
StringIndexOutOfBoundsException | 字符串索引超出范围 |
IOException | 输入输出异常 |
IllegalAccessException | 不允许访问某类 |
InstantiationException | 指定对象无法实例化 |
EOFException | 文件已结束 |
FileNotFoundException | 文件未找到 |
自定义异常
使用自定义异常步骤:
1.创建自定义异常类
2.在方法中通过throw抛出异常对象
3.要在抛出异常的方法中处理可使用try-catch捕获,否则在声明处通过throws指明要抛出给方法使用者的异常,继续下一步操作
4.在出现异常方法的调用者中捕获并处理方法
抛出异常
用法:方法中可能会发生异常,但不想在当前方法中立刻处理
throws
常被应用在声明方法时,用来指定方法肯抛出的异常,多个异常用逗号隔开
异常抛给上一级后如果不想处理可以继续上抛,但必须要有能处理该异常的代码
throw
常用于方法体中,并抛出一个对象,执行到throw语句时立刻终止,其后面的语句都不执行
若想在上一级捕获并处理异常,需要在抛出异常的方法中使用throws声明中指明要抛出的异常;
要捕捉throw抛出的异常必须使用try-catch
运行时异常
Java类库每个包都定义了异常类,异常类都是Throwable类的子类,该类又派生了Excption类和Error类
Error描述Java运行系统内部错误及资源耗尽的错误
Excption分为运行时异常和除运行时异常外的异常
常见运行时异常:
种类 | 说明 |
---|---|
NullPointException | 空指针 |
ArrayIndexOutOfBoundsException | 数组下标越界 |
ArithmeticException | 算术异常 |
ArrayStoreException | 数组包含不兼容值 |
IllegalArgumentException | 非法参数 |
SecurityException | 安全性异常 |
NegativeArraySizeException | 数组长度为负 |
异常使用原则
1.使用try-catch语句捕获异常
2.一个方法被覆盖时,覆盖他的方法必须抛出相同的异常或异常的子类
3.如果父类抛出多个异常,覆盖方法必须抛出异常的一个子集,不能抛出新异常