第8讲异常(中国铁道出版社 陈勇孝 郎洪编著).ppt
文本预览下载声明
异常处理 第8讲 异常处理 主要内容 异常概述 异常类 用户自定义异常类 异常的进一步讨论 本讲小结 异常概念 一般来说,程序在运行过程中各种情况都有可能发生,出现错误是难免的。Java把程序运行时的可能遇到的错误分为两类: 非致命错误 通过某种简单处理后,程序还能继续执行。称这类错误为异常。 如:文件不存在、无效的下标、空对象引用、算术运算零做除数等等。 致命错误 即程序遇到了非常严重的不正常状态,不能继续执行。称这类问题为错误。 如:链接错误、虚拟机错误等系统内部错误。 所谓异常,实际上是程序中的错误导致了中断指令流正常执行的一种事件。 异常概念 要保证程序的质量,就必须在程序中处理可能发生的各种错误。Java采用了异常的抛出和异常的捕获处理机制,和传统的方法相比有以下优点: 把错误代码从常规代码中分离出来; 一旦发生异常,即产生一个异常对象,并将它传递给调用堆栈; 按错误类型和错误差别分组; 提供了对于一些无法预测的错误的捕获和处理; 提供了完整的错误信息。 异常类 基类Throwable 常用构造方法 Throwable() 创建详细消息为null的对象. Throwable(String mess) 创建详细消息为mess的对象. Throwable(Throwable cause) 创建详细消息为cause的对象. 常用方法 public String getMessage() 返回此对象的详细消息. public String toString() 返回对象的简短描述。 public void printStackTrace() 将此对象及其追踪输出至标准错误流。 public void printStackTrace(PrintStream s) 将此对象及其追踪信息输出到输出流s。 public void printStackTrace(PrintWriter s) 将此对象及其追踪信息输出到PrintWriter对象s。 异常处理 抛出异常 当Java应用程序出现错误时,会产生一个异常对象,这个对象包含了异常的类型和错误出现时程序所处的状态信息。把异常对象递交给调用堆栈的过程称为抛出。 捕获异常 异常发生后,被传递给堆栈,程序沿着被调用的顺序往前寻找,只要找到符合该异常种类的处理代码,就将异常交给这部分程序代码去处理。这一过程叫作捕获。 抛出异常 抛出异常有两种方式:一是系统自动抛出异常;二是程序开发者根据设计要求在程序中主动创建异常对象,若遇到错误便抛出异常。 在程序中抛出异常的语句: throw语句 throw 异常类对象; 该语句一般用于自定义异常的抛出。 Throws 子句 定义方法抛出异常。其一般格式是: [访问符] [修饰符] 类型 方法名(形参表) throws 异常表 如果知道在方法中会产生异常,但并不确切知道如何对异常进行处理或无需对异常进行处理时,我们只需抛出异常。 异常的处理 try { 语句块 //可能产生异常的代码段 } catch(异常类型, 参数) { 语句块 //异常处理代码段 } [catch(异常类型1, 参数1) { 语句块 //异常处理代码段 } ……… catch(异常类型n, 参数n) { 语句块 //异常处理代码段 } ] [finally { 语句块//不论异常是否发生,均应执行的代码段 } ] 常见的异常 ArithmeticException ArrayIndexOutOfBandsException ArrayStoreException IOException FileNotFoundException NullPointerException MalformedURLException NumberFormatException OutOfMemoryException 用户自定义异常类 当有以下需求时: 希望当一个标准异常出现时添加信息; 对于一些特殊的应用,代码中需要一些出错条件以明确区分出某种特定的异常。 我们可以定义自己的异常类并创建异常对象来处理自己程序中的运行错误。自定义异常类必须遵循: 以Throwable作为超类,即它必须是Throwable类的子类(直接或间接); 可以从任何一个标准异常类派生出自定义异常类,但提倡从Exception异常类派生。 例:在前边的学生成绩录入程序中,要控制成绩的输入范围, 建立一个异常类,当输入的成绩不是规定范围内的数据时,引发该异常并进行相
显示全部