PAGE5
《面向对象程序设计》教案
第24讲
教学对象
计算机科学技术专业
授课内容
9.1异常与异常类
9.2捕获异常
9.3捕获多个异常
9.4throws和throw关键字
9.5try…with…resources
9.6自定义异常
9.7案例学习——数组不匹配异常
课程标准
教学目标
(一)知识目标
1.了解异常的概念及异常分类
2.理解异常体系结构及异常处理机制
3.掌握try…catch…finally异常处理
4.掌握throws关键字
(二)能力目标
1.能够根据实际情况选用合适的异常处理
2.能够合理使用异常处理机制编制更健壮的程序
教学方法
采用讲授法、演示法、讨论法、案例教学。
学时及分配(第1学时50分钟)
课堂讲授30分钟
课堂实践20分钟
9.1异常与异常类
9.2捕获异常
9.3捕获多个异常
9.4throws和throw关键字
学时及分配(第2学时50分钟)
课堂讲授20分钟
课堂实践30分钟
9.5try…with…resources
9.6自定义异常
9.7案例学习——数组不匹配异常
知识点分析
重点:
异常处理方法
try…catch…finally结构
自定义异常
难点:
异常处理机制
教学过程设计
内容
方式
问题导入
所谓异常(exception)是在程序运行过程中产生的使程序终止正常运行的错误对象。如数组下标越界、整数除法中零作除数、文件找不到等都可能使程序终止运行。
内容要点
9.1.1异常的概念
所谓异常(exception)是在程序运行过程中产生的使程序终止正常运行的错误对象。如数组下标越界、整数除法中零作除数、文件找不到等都可能使程序终止运行。
为了理解异常的概念,首先看下面的案例。
【程序9-1】数组下标越界异常ArrayExceptionDemo.java
packagecom.boda.xy;
publicclassArrayExceptionDemo{
publicstaticvoidmain(String[]args){
int[]a=newint[5];
不存在下标是5的元素System.out.println(a[5]);
不存在下标是5的元素
System.out.println(程序正常结束);
}
}
该段代码编译不会发生错误,但运行时在控制台输出错误信息。
程序执行没有结束,而是发生了异常。在控制台显示了异常信息,这里的信息表示,在main线程中发生java.lang.ArrayIndexOutOfBoundsException异常,它发生在程序的第5行。
Java语言规定在使用数组元素时,下标范围是0到数组的length-1,超出这个范围将发生ArrayIndexOutOfBoundsException异常,它称为数组下标越界异常。
9.1.2异常类型
Java异常类都是Throwable类的子类,它是Object类的直接子类,定义在java.lang包中。Throwable类有Error和Exception两个子类,这两个子类又分别有若干个子类。Error类描述的是系统内部错误,这样的错误很少出现。Exception类的子类一般又可分为两种类型:非检查异常和检查异常。
1.非检查异常
非检查异常(uncheckedexception)是RuntimeException类及其子类异常,也称为运行时异常。常见的非检查异常如图所示。
下面介绍几种常见的非检查异常。
NullPointerException:空指针异常,即当某个对象的引用为null时调用该对象的方法或使用对象时就会产生该异常,如:
Stringname=null;
System.out.println(name.length());//该语句发生异常
ArithmeticException:算术异常,在做整数的除法或整数求余运算时可能产生的异常,它是在除数为零时产生的异常。
inta=5;
intb=a/0;//该语句发生异常
注意:浮点数运算不会产生该类异常。如,1.0/0.0的结果为Infinity。
ClassCastException:对象转换异常,Java支持对象类型转换,若不符合转换的规定,则产生类转换异常,例如:
Objecto=newObject();
Strings=(String)o