Java语言程序设计 教学课件 作者 清华大学计算机与信息 6程序中的异常处理.ppt
文本预览下载声明
异常处理 异常基本概念 系统异常类 用户自定义异常 异常处理 异常转移 异常处理机制 当方法执行过程中出现错误而干扰了程序流程时,会抛出一个异常,即构造出一个异常类的对象。 异常类对象代表当前出现的一个具体异常,该对象封装了异常的有关信息。 异常分为系统定义异常和用户自定义异常。 异常抛出方式: 系统定义异常 -自动抛出 用户自定义异常-用throw语句抛出 方法中的异常处理: 捕获异常,就地解决,并使程序继续执行 。 将异常向外转移,即将异常抛出方法之外,由调用该方法的环境去处理。 程序中的异常处理可以提高程序的健壮性 异常类的继承关系 Throwable类 Exception类 Error类 自定义异常类 ArrayIndexOutOfBoundsException 类 NullPointerException 类 ... 系统定义的异常类 Error类定义的错误是致命性错误,一般会导致程序停止执行。 Exception类定义的是较轻的错误,你可以编写代码来处理这类错误,并继续程序的执行。 系统预定义异常类及含义 系统预定义的异常类 异常对应的运行错误说明 ClassNotFoundException 类型转换异常:如找不到要装载的类。 IllegalArgumentException 非法参数异常:可用于检查方法参数的合法性。 ArrayIndexOutOfBoundsException 下标越界异常:一般指数组下标越界。 FileNotFoundException 找不到文件异常:未找到指定的文件或目录。 IOException 输入输出异常:在输入输出操作时产生的异常。 NullPointerException 空指针异常:访问空的尚未实例化的引用型变量。 ArithmeticException 数学异常:如数学运算被零除等。 SecurityException 安全性异常:如Applet小程序要读写文件。 Exception类 构造函数 Exception() Exception(String 异常描述) 方法 String getMessage() -返回异常描述 String toString() - 返回异常对象详细信息。 void printStackTrace() 打印异常发生的路径,即引起异常的方法调用嵌套序列 用户定义异常类 用户自定义异常主要用来处理用户程序中特定的逻辑运行错误。 定义异常类: class MyExp extends Exception { //或继承其他异常类 ... //定义新的属性 ... //重载构造函数 ... // 重载原方法,或定义新方法 } 抛出异常(抛出异常类对象) : 例: if(...) throw new MyExp(例外信息) ; 异常处理 概念:警戒区-可能会引起异常的代码段 try { 警戒区代码(try块) //抛出异常 } catch(ExceptType e){ //捕获异常 异常处理代码 //处理异常 } 后续语句 若try块中没有异常,则try块执行完,控制转向后续语句。 若try块中出现异常,则控制转向下面的异常处理部分,然后执行后续语句。 要捕获的异常类对象 多异常处理 try { . . . } //可处理多种异常 catch( 异常类1 e1) { . . . } catch( 异常类2 e2) { . . . } 满足异常匹配的条件: 抛出对象与catch参数类型相同 抛出对象为catch参数类的子类 多异常处理中的匹配顺序: 按先后顺序捕获(注意catch块书写时的排列顺序: 先具体、后一般),但只捕获一次。 异常转移 异常总是发生在方法执行过程中。 当方法代码不对异常处理时,异常会向方法外转移。 系统定义的异常自动向外转移。 用户自定义的异常要转移需要在方法头声明一下: String readData() throws MyExp { … .. throw new MyExp(“年龄超过规定”); } 异常处理例 - 未作异常处理 public class Test { public static void main
显示全部