第8章JAVA异常处理_第1页
第8章JAVA异常处理_第2页
第8章JAVA异常处理_第3页
第8章JAVA异常处理_第4页
第8章JAVA异常处理_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第8讲讲 JAVA异常处理异常处理主要内容主要内容p 异常概述异常概述p 异常类异常类 p 用户自定义异常类用户自定义异常类 p 异常的进一步讨论异常的进一步讨论 p 本讲小结本讲小结2022-3-18异常处理2异常概念异常概念 一般来说,程序在运行过程中各种情况都有可能一般来说,程序在运行过程中各种情况都有可能发生,出现错误是难免的。发生,出现错误是难免的。JavaJava把程序运行时的把程序运行时的可能遇到的错误分为两类:可能遇到的错误分为两类:u 非致命错误非致命错误 通过某种简单处理后,程序还能继通过某种简单处理后,程序还能继续执行。称这类错误为异常。续执行。称这类错误为异常。 如:

2、文件不存在、无效的下标、空对象引用、算如:文件不存在、无效的下标、空对象引用、算术运算零做除数等等。术运算零做除数等等。u 致命错误致命错误 即程序遇到了非常严重的不正常状态,即程序遇到了非常严重的不正常状态,不能继续执行。称这类问题为错误不能继续执行。称这类问题为错误。 如:链接错误、虚拟机错误等系统内部错误。如:链接错误、虚拟机错误等系统内部错误。 所谓异常所谓异常, ,实际上是程序中的错误导致了中断指实际上是程序中的错误导致了中断指令流正常执行的一种事件。令流正常执行的一种事件。2022-3-18异常处理3异常概念异常概念 要保证程序的质量,就必须在程序中处理可能发要保证程序的质量,就必

3、须在程序中处理可能发生的各种错误。生的各种错误。Java采用了异常的抛出和异常的采用了异常的抛出和异常的捕获处理机制,和传统的方法相比有以下优点捕获处理机制,和传统的方法相比有以下优点:u 把错误代码从常规代码中分离出来;把错误代码从常规代码中分离出来;u 一旦发生异常,即产生一个异常对象,并将它传一旦发生异常,即产生一个异常对象,并将它传递给调用堆栈;递给调用堆栈;u 按错误类型和错误差别分组;按错误类型和错误差别分组;u 提供了对于一些无法预测的错误的捕获和处理;提供了对于一些无法预测的错误的捕获和处理;u 提供了完整的错误信息。提供了完整的错误信息。2022-3-18异常处理4异常类异常

4、类2022-3-18异常处理5基类基类Throwable 常用构造方法常用构造方法 Throwable() 创建详细消息为创建详细消息为null的对象的对象. Throwable(String mess) 创建详细消息为创建详细消息为mess的对象的对象. Throwable(Throwable cause) 创建详细消息为创建详细消息为cause的的对象对象. 常用方法常用方法 public String getMessage() 返回此对象的详细消息返回此对象的详细消息. public String toString() 返回对象的简短描述。返回对象的简短描述。 public void p

5、rintStackTrace() 将此对象及其追踪输出至标将此对象及其追踪输出至标准错误流。准错误流。 public void printStackTrace(PrintStream s) 将此对象及其将此对象及其追踪信息输出到输出流追踪信息输出到输出流s。 public void printStackTrace(PrintWriter s) 将此对象及其将此对象及其追踪信息输出到追踪信息输出到PrintWriter对象对象s。2022-3-18异常处理6异常处理异常处理 u 抛出异常抛出异常 当当Java应用程序出现错误时,会产生一个异常对象,应用程序出现错误时,会产生一个异常对象,这个对象

6、包含了异常的类型和错误出现时程序所处这个对象包含了异常的类型和错误出现时程序所处的状态信息。把异常对象递交给调用堆栈的过程称的状态信息。把异常对象递交给调用堆栈的过程称为抛出。为抛出。u 捕获异常捕获异常 异常发生后,被传递给堆栈,程序沿着被调用的顺异常发生后,被传递给堆栈,程序沿着被调用的顺序往前寻找序往前寻找,只要找到符合该异常种类的处理代码只要找到符合该异常种类的处理代码,就就将异常交给这部分程序代码去处理。这一过程叫作将异常交给这部分程序代码去处理。这一过程叫作捕获。捕获。2022-3-18异常处理7抛出异常抛出异常 抛出异常有两种方式:一是系统自动抛出异常;二抛出异常有两种方式:一是

7、系统自动抛出异常;二是程序开发者根据设计要求在程序中主动创建异常是程序开发者根据设计要求在程序中主动创建异常对象,若遇到错误便抛出异常。对象,若遇到错误便抛出异常。 在程序中抛出异常的语句:在程序中抛出异常的语句:u throw语句语句 throw 异常类对象;异常类对象; 该语句一般用于自定义异常的抛出。该语句一般用于自定义异常的抛出。u Throws 子句子句 定义方法抛出异常。其一般格式是:定义方法抛出异常。其一般格式是: 访问符访问符 修饰符修饰符 类型类型 方法名方法名(形参表形参表) throws 异常表异常表 如果知道在方法中会产生异常,但并不确切知道如何对异常如果知道在方法中会

8、产生异常,但并不确切知道如何对异常进行处理或无需对异常进行处理时,我们只需抛出异常。进行处理或无需对异常进行处理时,我们只需抛出异常。示例示例1实现实现2022-3-18异常处理8异常的处理异常的处理 try 语句块语句块 /可能产生异常的代码段可能产生异常的代码段catch(异常类型异常类型, 参数参数) 语句块语句块 /异常处理代码段异常处理代码段catch(异常类型异常类型1, 参数参数1) 语句块语句块 /异常处理代码段异常处理代码段 catch(异常类型异常类型n, 参数参数n) 语句块语句块 /异常处理代码段异常处理代码段 finally 语句块语句块/不论异常是否发生,均应执行的

9、代码段不论异常是否发生,均应执行的代码段 trycatchfinally语句语句块的结构,对程序中抛块的结构,对程序中抛出的异常进行捕捉处理。出的异常进行捕捉处理。结构的一般格式:结构的一般格式:包含可能引发一个或多个异常的代码。所希望捕捉的可能会引发异常的语句代码必须放在该块中。 包含着用于处理某一特定类型异常的代码段。try块中可能会抛出多个异常,要捕捉并处理这些异常,就需要对应有多个catch代码块。每一个catch代码块只能对应处理一类异常。 finally代码块总是在方法结束前执行。用于处理一些遗留问题。 2022-3-18异常处理9常见的异常常见的异常u ArithmeticExc

10、eptionu ArrayIndexOutOfBandsExceptionu ArrayStoreExceptionu IOExceptionu FileNotFoundExceptionu NullPointerExceptionu MalformedURLExceptionu NumberFormatExceptionu OutOfMemoryException程序程序24示例实现示例实现2022-3-18异常处理10用户自定义异常类用户自定义异常类 当有以下需求时:当有以下需求时:u希望当一个标准异常出现时添加信息;希望当一个标准异常出现时添加信息;u对于一些特殊的应用,代码中需要一些出

11、错条件以明确区对于一些特殊的应用,代码中需要一些出错条件以明确区分出某种特定的异常。分出某种特定的异常。 我们可以定义自己的异常类并创建异常对象来处理自己程我们可以定义自己的异常类并创建异常对象来处理自己程序中的运行错误。自定义异常类必须遵循:序中的运行错误。自定义异常类必须遵循:u 以以Throwable作为超类,即它必须是作为超类,即它必须是Throwable类的子类类的子类(直接或间接)(直接或间接);u 可以从任何一个标准异常类派生出自定义异常类,但提倡可以从任何一个标准异常类派生出自定义异常类,但提倡从从Exception异常类派生。异常类派生。例:例:在前边的学生成绩录入程序中在前

12、边的学生成绩录入程序中,要控制成绩的输入范围要控制成绩的输入范围, 建立一个异常类,当输入的成绩不是规定范围内的数据时建立一个异常类,当输入的成绩不是规定范围内的数据时,引发该异常并进行相关处理。引发该异常并进行相关处理。2022-3-18异常处理11定义异常类定义异常类ResultOutOfBoundsException /*这是一个定义成绩超出规定范围的异常类这是一个定义成绩超出规定范围的异常类 *类名是类名是: ResultOutOfBoundsException */public class ResultOutOfBoundsException extends Exception Re

13、sultOutOfBoundsException() /构造方法构造方法 super(成绩数据超限错误成绩数据超限错误!); public String toString() /返回信息方法返回信息方法 return 成绩数据超限错误成绩数据超限错误!成绩不能为负值,也不能超出成绩不能为负值,也不能超出规定的范围规定的范围!; 2022-3-18异常处理12定义成绩类定义成绩类Result /*这是一个定义学生成绩的类这是一个定义学生成绩的类 *类名是类名是: Result */ public class Result String student_no; int rs1; Result()

14、/构造方法构造方法1 student_no=00000000000; rs1=0; / 构造方法构造方法1结束结束 Result(String no,int r1)/构造方法构造方法2 student_no=no; rs1=r1; / 构造方法构造方法2结束结束 /*定义方法定义方法isResult() 抛出异常抛出异常*/ public boolean isResult() throws ResultOutOfBoundsException if ( rs1100 ) throw new ResultOutOfBoundsException(); else return true; / 方法

15、方法isResult结束结束示例演示示例演示2022-3-18异常处理13异常的进一步讨论异常的进一步讨论 u层次性问题层次性问题 u嵌套性问题嵌套性问题 u有效使用问题有效使用问题 try . /可能发生异常的代码段可能发生异常的代码段 .catch(Exception e) . /对捕捉到异常的处理代码对捕捉到异常的处理代码catch(ArrayIndexOutOfBoundsException e1) . /对捕捉到异常的处理代码对捕捉到异常的处理代码catch(ArithmeticException e2) . /对捕捉到异常的处理代码对捕捉到异常的处理代码try /可能发生异常的代码

16、段可能发生异常的代码段 try /可能发生异常的代码段可能发生异常的代码段 catch() /对捕捉到异常的处理代码对捕捉到异常的处理代码/ catch( ) try catch(.) public void displayString(String str) try catch(NullPointerException e) 引用错误!这个字符串是一个空对象引用错误!这个字符串是一个空对象”); public void displayString(String str) if(str!=null) else 引用错误!这个字符串是一个空对象引用错误!这个字符串是一个空对象”); 2022-3-18异常处理14本讲小结本讲小结 本讲主要讲述了本讲主要讲述了Java中的异常及异常处理的基本中的异常及异常处理的基本概念,异常及异常处理的应用。概念,异常

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论