Download presentation
Presentation is loading. Please wait.
1
3.7 Java的异常处理机制
2
目录 CONTENTS 3.7.1 异常类的定义 异常的处理 3.7.2
3
异常类的定义
4
3.7.1 异常类的定义 编程中的错误 编程中的错误分为编译错误和运行错误。 编译错误:
异常类的定义 编程中的错误分为编译错误和运行错误。 编译错误: 是程序由于语法的原因无法通过由源代码到目标码的编译而产生的错误。 运行错误: 系统错误:引发操作系统问题的错误,如死循环、死机; 逻辑错误:无法实现设计意图和功能的错误,如算法考虑不周、边界条件不正确。 编程中的错误
5
异常类的定义 Java的异常 所谓异常就是程序运行时可能出现的一些错误。Java中的异常是一种特殊的错误运行对象,又称例外,对应着Java语言特定的运行错误处理机制。 为了能够及时有效地处理程序中的运行错误,Java引入了异常和异常类,异常是异常类的对象。 一旦一个异常对象产生了,系统中就一定有相应的机制来处理它,确保不会产生死机、死循环或其它对操作系统的损害,保证整个程序运行的安全性。
6
3.7.1 异常类的定义 异常类结构与组成 在 Java 中,所有的异常都有一个共同的祖先 Throwable(可抛出),
异常类的定义 在 Java 中,所有的异常都有一个共同的祖先 Throwable(可抛出), Throwable位于 java.lang包中,有两个重要的子类: Exception(异常)和 Error(错误)。 异常类结构与组成 Error(错误): 是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。 Exception(异常): 是程序本身可以处理的异常。Exception 类有一个重要的子类 RuntimeException,RuntimeException 类及其子类表示“JVM 常用操作”引发的错误。
7
异常类的定义 异常类结构与组成 每一种异常类对应一种特定的错误; 异常类都是系统Exception类的子类。
8
3.7.1 异常类的定义 Java的Exception类 Exception类的两个构造方法: public Exception();
异常类的定义 Exception类的两个构造方法: public Exception(); public Exception(String s); //s是对该例外所对应的错误的描述。 Java的Exception类 从父类Throwable继承的常用方法: 1) public String toString(); 该方法返回描述当前Exception类信息的字符串。 2) public void printStackTrace(); 该方法的功能是完成一个打印操作,在屏幕上输出当前例外对象 的堆栈使用轨迹,即程序先后调用了哪些对象或类的方法,使得运行过程中产生了这个例外对象。
9
3.7.1 异常类的定义 Java的 运行异常 Java中常见的系统定义的运行异常与所对应的系统运行错误一览表 系统定义的运行异常
异常类的定义 Java的 运行异常 Java中常见的系统定义的运行异常与所对应的系统运行错误一览表 系统定义的运行异常 异常对应的系统运行错误 ClassNotFoundException 未找到欲装载使用的类 ArrayIndexOutOfBoundsException 数组越界使用 FileNotFoundException 未找到指定的文件或目录 IOException 输入、输出错误 ArithmeticException 算术错误,如除数为0 NullPointerException 引用了未被初始化的对象
10
3.7.1 异常类的定义 用户自定义的异常类 用户自定义异常的作用: 用来处理程序中特定的逻辑运行错误。 创建方法:
异常类的定义 用户自定义的异常类 用户自定义异常的作用: 用来处理程序中特定的逻辑运行错误。 创建方法: 1)声明一个新的异常类,使之以Exception类或其他某个已经存在的系统异常类或用户异常类为父类; 2)为新的异常类定义属性和方法,或重写父类的属性和方法,使这些属性和方法能够体现该类所对应的错误的信息。 定义足够多的异常类是构建一个稳定完善的应用系统的重要基础之一。
11
异常类的定义 用户自定义异常类示例
12
异常的处理
13
3.7.2 异常类的处理 Java的异常处理机制 在 Java 应用程序中,异常处理机制包括:抛出异常+捕捉异常
异常类的处理 在 Java 应用程序中,异常处理机制包括:抛出异常+捕捉异常 Java的异常处理机制 抛出异常:当一个方法出现错误引发异常时,方法创建异常对象并交付运行时系统,异常对象中包含了异常类型和异常出现时的程序状态等异常信息。运行时系统负责寻找处置异常的代码并执行。 捕获异常:在方法抛出异常之后,运行时系统从发生异常的方法开始,依次回查调用栈中的方法,直至找到含有合适异常处理器的方法并执行。当异常处理器所能处理的异常类型与方法抛出的异常类型相符时,即为合适的异常处理器。当未找到合适的异常处理器,则运行时系统终止,Java程序也终止。
14
异常的处理 Java程序在运行时,如果由于可识别的错误,系统就产生一个与该错误相对应的异常类的对象,这个过程就是异常的抛出。 异常的抛出 1)系统自动抛出的异常 所有系统定义的运行异常都可以由系统自动抛出。 Java规定: 运行时异常将由Java运行时系统自动抛出,允许应用程序忽略运行时异常。但对于可查异常必须捕捉、或者声明抛出。
15
异常的处理 系统自动抛出的异常示例
16
3.7.2 异常的处理 异常的抛出 2)语句抛出的异常 任何Java程序都可以通过 throw 语句抛出异常。
异常的处理 2)语句抛出的异常 任何Java程序都可以通过 throw 语句抛出异常。 异常的抛出 当一个方法要抛出可查异常时,必须在方法头使用 throws 子句声明。 用户自定义的异常系统不能自动抛出,需要编程者在程序中的合适位置创建自定义异常的对象,并利用 throw 语句将这个新异常对象抛出。
17
3.7.2 异常的处理 异常的抛出 方法抛出异常的语法: [修饰符] 返回类型 方法名(参数列表) throws 异常类名列表 { ...
异常的处理 异常的抛出 方法抛出异常的语法: [修饰符] 返回类型 方法名(参数列表) throws 异常类名列表 { ... if (条件语句) throw ( new 异常类名( )); ... } 对有可能出现异常的方法,用throws语句列出可能出现的异常类名,这样当发生异常时,系统就调用异常处理程序。 抛出异常的语句应该被定义为在满足一定条件时执行。
18
异常的处理 定义可能产生异常的方法 示例
19
3.7.2 异常的处理 异常的捕获 捕捉异常语法: 异常被抛出时,用专门的语句来接收异常对象,格式如下:
异常的处理 捕捉异常语法: 异常被抛出时,用专门的语句来接收异常对象,格式如下: catch(异常类名 异常形式参数名) { 异常处理语句; } 异常的捕获 每个catch语句块都应该与一个try语句块相对应,这个try语句块用来启动Java的异常处理机制,可能抛出异常的语句(包括throw语句、调用可能抛出异常方法的方法调用语句)都应该包含在这个try语句块中。
20
异常的处理 异常被捕获处理的示例
21
异常的处理 多异常处理方式: 通过一个try块后面定义若干个catch块来实现,每个catch块用来接收和处理一种特定的异常对象。 多异常 处理 每个catch块中的语句应根据异常的不同执行不同的操作。 处理多异常时应注意设计各catch块的排列顺序,一般处理较具体和常见的异常应放在前,可以与多种异常相匹配的应放在后,否则可能造成它后面的catch块将永远不被使用。
22
异常的处理 用try/catch块抛出并捕获异常示例
23
三种情况的运行结果测试如下: 1 2 3
24
异常的处理 定义 异常处理小结 抛出 捕获
25
谢谢观看!
Similar presentations