2023年11月29日发(作者:)

课程名称: 异常

适用专业: 蓝桥班

时: 4

任课教师:

称: 讲师

蓝桥学院制

二〇一九年八月一日

1

填写说明

1.教案编写要求内容简明、条理清楚、教学目的明确、教学内容设置

合理、重点难点清晰;以简案为主。

2.教案按一个教学单元或者一个具体的项目、任务进行编制,一个教

学单元、项目或者任务原则上为2-4课时,具体的课时可根据实际情况而

定。

3.单元内容:指本教学单元的主题内容,可以是课题、训练项目、工作

任务或是教学模块。

蓝桥学院课程教案

单元内容单元序号17

异常

单元课时4多媒体教学教学手段

教学方法讲授法

教学课型█理论 □实训

1. 熟练掌握异常的处理;

2. 理解使用自定义异常实现程序设计。

能力目标

知识目标

1. 异常的类别;

2. 异常处理;

3. 自定义异常类;

1. try….cath…finally结构

教学重点

(必须达成的)

教学难点

(不利因素)

1. throw语句

2. throws选项

1. 把握详略,总控时间

教学关键点

(克服困难)

2. 知识点阐明

教学过程设计

1. 异常

在实际工作中,我们遇到的情况不可能是非常完美的。比如:你写的某个模块,

用户输入不一定符合你的要求;你的程序要打开某个文件,这个文件可能不存在

或者文件格式不对;你要读取数据库的数据,数据可能是空的;我们的程序再运行

着,但是内存或硬盘可能满了等等。

软件程序在运行过程中,非常可能遇到刚刚提到的这些问题,我们称之为

时间(分钟)

3

异常,英文是:Exception,意思是例外。遇到这些例外情况,或者叫异常,我们

怎么让写的程序做出合理的处理,安全的退出,而不至于程序崩溃呢?我们本章

就要讲解这些问题。

2. 异常的基本概念

异常指程序运行过程中出现的非正常现象,例如用户输入错误、除数为零、

需要处理的文件不存在、数组下标越界等。

Java的异常处理机制中,引进了很多用来描述和处理异常的类,称为异

常类。异常类定义中包含了该类异常的信息和对异常进行处理的方法。

所谓异常处理,就是指程序在出现问题时依然可以正确的执行完。

我们开始看我们的第一个异常对象,并分析一下异常机制是如何工作的。

Java是采用面向对象的方式来处理异常的。处理过程:

1. 抛出异常:在执行一个方法时,如果发生异常,则这个方法生成代表该

异常的一个对象,停止当前执行路径,并把异常对象提交给JRE

2. 捕获异常:JRE得到该异常后,寻找相应的代码来处理该异常。JRE

在方法的调用栈中查找,从生成异常的方法开始回溯,直到找到相应的异常处理

代码为止。

3. 异常分类

JDK 中定义了很多异常类,这些类对应了各种各样可能出现的异常事件,

有异常对象都是派生于Throwable类的一个实例。如果内置的异常类不能够满足

需要,还可以创建自己的异常类。

Java对异常进行了分类,不同类型的异常分别用不同的Java类表示,所有异

常的根类为bleThrowable下面又派生了两个子类:Error

Exception

Error

Error是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错

误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的

问题。例如,Java虚拟机运行错误(Virtual MachineError) JVM 不再有继续执

行操作所需的内存资源时,将出现 OutOfMemoryError。这些异常发生时,Java

虚拟机(JVM)一般会选择线程终止。

Error表明系统JVM已经处于不可恢复的崩溃状态中。我们不需要管它。

Exception

Exception

(NullPointerException)数组下标越界异常(ArrayIndexOutOfBoundsException)

型转换异常(ClassCastException)、算术异常(ArithmeticException)等。

Exception类是所有异常类的父类,其子类对应了各种各样可能出现的异

常事件。 通常Java的异常可分为:

1. RuntimeException 运行时异常

2. CheckedException 已检查异常

ErrorException的区别

1. 我开着车走在路上,一头猪冲在路中间,我刹车。这叫一个异常。

2. 我开着车在路上,发动机坏了,我停车,这叫错误。系统处于不可恢

复的崩溃状态。发动机什么时候坏?我们普通司机能管吗?不能。发动机什么时候

4

坏是汽车厂发动机制造商的事。

4. 异常分类

RuntimeException运行时异常:

ArithmeticException异常:试图除以0

NullPointerException异常

ClassCastException异常

ArrayIndexOutOfBoundsException异常

NumberFormatException异常

CheckedException已检查异常

所有不是RuntimeException的异常,统称为Checked Exception,又被称

“已检查异常”IOExceptionSQLException等以及用户自定义的Exception

异常

5. 异常的处理

一、 try….catch…finally…

捕获异常是通过3个关键词来实现的:try-catch-finallytry来执行一段程

序,如果出现异常,系统抛出一个异常,可以通过它的类型来捕捉(catch)并处理

它,最后一步是通过finally语句为异常处理提供一个统一的出口,finally所指定

的代码都要被执行(catch语句可有多条;finally语句最多只能有一条,根据自己的

需要可有可无)

上面过程详细解析:

1. try

2. catch

3. finally

程序首先执行可能发生异常的try语句块。如果try语句没有出现异常则执

行完后跳至finally语句块执行;如果try语句出现异常,则中断执行并根据发生的

异常类型跳至相应的catch语句块执行处理。catch语句块可以有多个,分别捕获

不同类型的异常。catch语句块执行完后程序会继续执行finally语句块。finally

语句是可选的,如果有的话,则不管是否发生异常,finally语句都会被执行。

二、 声明异常(throws子句)

CheckedException产生时,不一定立刻处理它,可以再把异常throws

去。

在方法中使用try-catch-finally是由这个方法来处理异常。但是在一些情况

下,当前方法并不需要处理发生的异常,而是向上传递给调用它的方法处理。

如果一个方法中可能产生某种异常,但是并不能确定如何处理这种异常,

应根据异常规范在方法的首部声明该方法可能抛出的异常。

如果一个方法抛出多个已检查异常,就必须在方法的首部列出所有的异常,

之间以逗号隔开。

6. 自定义异常

1.在程序中,可能会遇到JDK提供的任何标准异常类都无法充分描述清楚

我们想要表达的问题,这种情况下可以创建自己的异常类,即自定义异常类。

2.自定义异常类只需从Exception类或者它的子类派生一个子类即可。

5

3.自定义异常类如果继承Exception类,则为受检查异常,必须对其进行处

;如果不想处理,可以让自定义异常类继承运行时异常RuntimeException类。

4.习惯上,自定义异常类应该包含2个构造器:一个是默认的构造器,另一

个是带有详细信息的构造器。

思考题

与作业

教材、资料

附件

教学反思

6