单元7 异常处理_第1页
单元7 异常处理_第2页
单元7 异常处理_第3页
单元7 异常处理_第4页
单元7 异常处理_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、JAVA 程序设计程序设计单元七 异常处理单元七 异常处理学习目标:学习目标:v理解异常的概念v理解异常产生的原因v掌握异常处理机制v掌握自定义异常 单元七 异常处理任务一:捕获异常1任务二:声明异常2任务三:抛出异常和自定义 异常3任务一:捕获异常任务一:捕获异常 一、任务描述一、任务描述 本任务通过对程序的逐步改进,首先找出所有可能出现的算术异常和数组下标越界,再使用异常处理机制捕获并处理所找出的异常算法异常和数组下标越界异常。 任务一:捕获异常任务一:捕获异常 二、任务实施二、任务实施1.未进行异常处理的程序未进行异常处理的程序(1)算术异常)算术异常程序7.1 TestExceptio

2、n:public class TestException public static void main(String args) int number=4,8,16,32,64,128,256,512; int denom=2,0,4,4,0,8; for(int i=0;inumber.length ;i+) System.out.println(numberi + / + denomi + is + numberi / denomi); 任务一:捕获异常任务一:捕获异常 (2)数组下标越界异常)数组下标越界异常修改程序7.1中数组denom的值,不再出现0,即可避免算法异常的发生程序7.

3、2 TestException:public class TestException public static void main(String args) int number=4,8,16,32,64,128,256,512; int denom=2,2,4,4,2,8; for(int i=0;inumber.length ;i+)System.out.println(numberi + / + denomi + is + numberi / denomi); 任务一:捕获异常任务一:捕获异常 2.捕获异常捕获异常v对程序7.1中可能出现ArithmeticException 异常和A

4、rrayIndexOutOfBoundsException异常,可以使用trycatch语句进行异常捕获处理。v程序的输出结果表明:程序在运行过程中同样产生了异常,但由于使用了trycatch语句对异常进行了捕获处理,程序继续执行下一条语句,最后正常退出。任务一:捕获异常任务一:捕获异常 三、相关知识三、相关知识 1.异常基本概念异常基本概念(1)异常的表示)异常的表示(2)异常类的层次)异常类的层次ObjectThrowableErrorExceptionRuntimeException任务一:捕获异常任务一:捕获异常 三、相关知识三、相关知识 2.异常捕获处理异常捕获处理Java异常捕获处

5、理的完整格式为:try .catch(ExceptionName1 e).catch(ExceptionName2 e).finally. 任务一:捕获异常任务一:捕获异常 三、相关知识三、相关知识 2.异常捕获处理异常捕获处理如果我们只使用一个如果我们只使用一个catch语句处理程序语句处理程序7.3,那么程序的异常处理代码可以修改为:那么程序的异常处理代码可以修改为: try System.out.println(numberi + / + denomi + is +numberi / denomi);catch(RuntimeException e) System.out.println

6、(e.getMessage(); 任务一:捕获异常任务一:捕获异常 四、任务小结四、任务小结v异常处理是一个重要的机制,也是程序设计的一个难点。vJava所有的异常都可以用一个类型来表示,不同类型的异常对应不同的子类异常。v使用异常处理机制可以提高程序的健壮性。v通过捕获异常信息,为程序的开发维护提供了方便。任务二:声明异常任务二:声明异常 一、任务描述一、任务描述 v某些时候,方法不知道该如何对异常进行处理又或者异常发生的几率很小而不对异常进行处理。vJava提供了一个简单的机制,一个方法并不需要处理它所生成的异常,而是向上传递,由调用它的方法来处理这些异常,这时就要用到throws子句。

7、任务二:声明异常任务二:声明异常 二、任务实施二、任务实施1.使用使用throws子句声明异常子句声明异常针 对 程 序 7 . 1 中 可 能 出 现 的 异 常ArrayIndexOutOfBoundsException和异常ArithmeticException,我们可以不使用trycatch语句进行异常捕获处理,而是沿着方法调用栈上溯。 任务二:声明异常任务二:声明异常 二、任务实施二、任务实施2.编译和运行程序编译和运行程序与程序7.3的运行结果有所不同。这正是因为对于try语句块中的代码,一旦某一条语句产生异常,即使异常被捕获处理,该语句块中剩余的代码都不会被执行。 任务二:声明异

8、常任务二:声明异常 三、相关知识三、相关知识1.throws子句子句throws子句包含在方法的声明中,格式如下:returnType methodName(arguments) throws ExceptionList 任务二:声明异常任务二:声明异常 三、相关知识三、相关知识2.异常的声明和捕获处理异常的声明和捕获处理 Java允许对一个方法中可能出现的异常全部进行捕获处理、或者全部使用throws子句声明交由上一级,也允许捕获处理部分,余下的再做throws声明。 在进行程序设计的时候,可以根据自己的需要选择要捕获处理的异常,也可以把某些异常统一交给上一级进行处理。 任务二:声明异常任务

9、二:声明异常 四、任务小结四、任务小结 一个throws子句声明了一个方法可能会引发的所有异常类型。这对于除Error或RuntimeException及它们子类以外类型的所有异常是必要的。一个方法可以引发的所有其它类型的异常必须在throws子句中声明,否则,将会导致编译错误。任务三:抛出异常和自定义异常任务三:抛出异常和自定义异常 一、任务描述一、任务描述 到目前为止,我们只是获取了Java运行时系统引发的异常。然而程序是可以用throw语句引发明确的异常。不仅如此,Java允许用户自定义异常以满足实际需要。我们就第四单元的员工类对自定义异常和throw语句的使用做简单介绍。 任务三:抛出

10、异常和自定义异常任务三:抛出异常和自定义异常 二、任务实施二、任务实施1.throw语句抛出异常语句抛出异常 整型变量age做为员工的年龄属性。 语句age=-30;是不会产生异常的。然后在现实世界中,一个员工的年龄是不可能为负数的。因此,在某些实际情况下,程序员需要自己抛出异常,以满足实际需求。 任务三:抛出异常和自定义异常任务三:抛出异常和自定义异常 二、任务实施二、任务实施1.throw语句抛出异常语句抛出异常 在构造对象的时候,如果形参age的值小于等于0,那么throw子句将执行,并抛出一个Exception类的异常。因为我们未对异常进行捕获处理,所以需要在方法首部使用throws子

11、句声明该方法中可能出现的异常。任务三:抛出异常和自定义异常任务三:抛出异常和自定义异常 二、任务实施二、任务实施1.throw语句抛出异常语句抛出异常 程序程序7.8 TestThrow:public class TestThrowpublic static void main(String args)try Employee ep1=new Employee(刘涛,M,-26); catch(Exception e) System.out.println(e); 编译运行程序,捕获的异常类型为抛出的异常对象类型 任务三:抛出异常和自定义异常任务三:抛出异常和自定义异常 二、任务实施二、任务实

12、施2.自定义员工年龄异常类自定义员工年龄异常类 class AgeException extends Exception/定义的异常类继承于ExceptionAgeException()AgeException(String s) super(s); 任务三:抛出异常和自定义异常任务三:抛出异常和自定义异常 二、任务实施二、任务实施修改程序7.7中Employee类的构造方法为:public Employee(String name,char gender,int age) throws AgeE=name;this.gender=gender;if(age=0) throw new AgeException(age is invalid); /抛出异常 else this.age=age; salary=2000+(age-20)/5*300; 任务三:抛出异常和自定义异常任务三:抛出异常和自定义异常 三、相关知识三、相关知识1.抛出异常对象抛出异常对象throw ThrowbleObject; 2.自定义异常类自定义异常类v 我们常常希望建立自己的异常类型来处理在编程应用中的特殊情况 v 自

温馨提示

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

评论

0/150

提交评论