目录
4.try-catch-finally结构中try语句块是必须的,catch、finally语句块均可选,但两者至少出现之一
异常
1.什么是异常
异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序
2.什么是异常处理
Java编程语言使用异常处理机制为程序提供了错误处理的能力
3.如何进行异常处理
Java的异常处理是通过5个关键字来实现的:try、catch、 finally、throw、throws
①try
执行可能产生异常的代码
②catch
捕获异常
③finally
无论是否产生异常,代码总能执行
④throw
手动抛出异常
⑤throws
声明方法可能要抛出的各种异常
4.try-catch-finally结构中try语句块是必须的,catch、finally语句块均可选,但两者至少出现之一
1)try-catch
public void method(){
try {
// 代码段 1
// 产生异常的代码段 2
// 代码段 3
} catch (异常类型 ex) {
// 对异常进行处理的代码段4
}
// 代码段5
}
①代码不产生异常,则执行完try中语句后,正常执行try-catch后的代码段
②代码产生异常对象与catch中异常类型相匹配,进入catch后的对异常进行处理的代码段,再执行try-catch后的代码段
在catch后的对异常进行处理的代码段中,使用异常对象调用方法输出异常信息
e.printStackTrace();
③代码产生异常对象与catch中异常类型不匹配,程序中断运行。
2)try-catch-finally
public void method(){
try {
// 代码段 1
// 产生异常的代码段 2
} catch (异常类型 ex) {
// 对异常进行处理的代码段3
return;
}finally{
// 代码段 4
}
}
finally中的代码段是否发生异常都执行;
不执行的唯一情况try或catch代码段中包含System.exit(1);即出现中断程序,则不执行finally中代码段
存在return的try-catch-finally块中,先正常执行代码,遇到return时,先执行finally块,再return退出方法
5.多重catch块
引发多种类型的异常
排列catch 语句的顺序:先子类后父类
发生异常时按顺序逐个匹配
只执行第一个与异常类型匹配的catch语句
6.声明异常
throws声明某个方法可能抛出的各种异常,多个异常用逗号隔开
如果在一个方法体中抛出了异常,如何通知调用者?
方式1:调用者处理异常
方式2:调用者继续声明异常
main()方法声明的异常由Java虚拟机处理
7.抛出异常
1)throw
生成并抛出异常
位于方法体内部,可作为单独语句使用
抛出一个异常对象,且只能是一个
2)throws
声明方法内抛出了异常
必须跟在方法参数列表后面,不能单独使用
声明抛出异常类型,可以跟多个异常
8.自定义异常
定义异常类
编写构造方法,继承父类的实现
实例化自定义异常对象
使用throw抛出
9.异常链
A方法调用B方法时,B方法却抛出了异常。那A方法继续抛出原有的异常还是抛出一个新异常呢?
抛出原有的异常
A方法与B方法进行了关联,不便于代码的修改和扩展
抛出新的异常
异常链创建了新的异常但却保留了原有异常的信息
10.异常处理原则
异常处理与性能
异常只能用于非正常情况
不要将过于庞大的代码块放在try中
在catch中指定具体的异常类型
需要对捕获的异常做处理