异常处理Java程序设计及应用.ppt_第1页
异常处理Java程序设计及应用.ppt_第2页
异常处理Java程序设计及应用.ppt_第3页
异常处理Java程序设计及应用.ppt_第4页
异常处理Java程序设计及应用.ppt_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

2019/7/24,1,Java程序设计及应用开发教程,主编: 虞益诚,E-mail:,2019/7/24,第6章 异常处理,2,第6章 异常处理,6.1 异常处理机制 6.2 异常处理方法 6.3 本章小结 本章主要讲述Java语言中的异常及异常处理方法。首先讲述了Java语言的异常处理机制,对Java的异常类层次进行了描述,对常见的异常类型作了解释;对捕获异常以及异常处理方法的常用语句进行了解释和分析;也对自定义异常的方法进行了讲解。,2019/7/24,第6章 异常处理,3,6.1 异常处理机制,异常(Exception)就是程序在运行过程中所发生的异常事件,即不可预测的非正常情况。 Java语言提供的异常处理机制主要是用来处理程序执行过程中产生的各种错误(如数组下标越界、除数为0等)。 使用异常对程序给出一个统一和相对简单的抛出和处理错误的机制。如果一个方法本身能抛出异常,当所调用的方法出现异常时,调用者可以捕获异常使之得到处理;也可以回避异常。 6.1.1 异常层次结构 异常类的根节点为 Throwable,它分为两 大类Error(错误)和 Exception(异常)。 常见系统定义的执行异 常如表6-1所示。 例如:int x=0,y;y=20/x; ArithmeticException 算术错误异常 ,图6-1 异常的层次结构,2019/7/24,第6章 异常处理,4,6.1 异常处理机制0,2019/7/24,第6章 异常处理,5,6.1 异常处理机制,6.1.2 异常处理机制 异常采用了一种面向对象的处理机制,把异常看作一种类,每当发生此类事件时,Java即自动创建一个异常对象,并执行相应的代码去处理该事件。 6.1.3 异常的分类 异常通常分为三种类型: 第一类是Java虚拟机由于某些内部错误产生的异常,这类异常不在用户程序的控制之内,用户不需要处理这类异常; 第二类是标准异常,这类异常通常是由程序代码中的错误产生的,例如被0除、数组下标越界等。这是需要用户程序处理的异常。 第三类是用户根据需要在程序中自定义的异常。 6.1.4 内置异常类 系统中原有的异常类称为内置异常类,与自定义异常类不同,内置异常类是系统已经定义好的,程序员只能对产生了这些异常之后如何进行处理来编程,不能指定怎样的异常属于内 【例6-1】应用程序采用默认异常处理的执行情况。类。,2019/7/24,第6章 异常处理,6,6.2 异常处理方法,Java提供了两种异常方法: 其一是使用trycatchfinally结构语句对异常进行捕捉和处理; 其二是通过throw和throws抛出异常。 6.2.1 异常的捕获与处理 异常处理的语法结构形式如下: try 可能出现异常的程序执行体 catch(异常类型1 异常对象1) 异常类型1对应异常处理程序体1 catch(异常类型2 异常对象2) 异常类型1对应异常处理程序体2 . Finally 异常处理结束前的执行程序体 【说明】 try语句用于指明可能产生异常的程序代码段,其中所写的为被监视的代码段,一旦发生异常,则由catch代码进行处理。 catch为等待处理的异常事件及其处理代码,在try语句之后。一个try语句可以有若干个catch语句与之相匹配,用于捕捉异常。每一个要捕捉的异常类型对应一个catch语句,该语句包含着异常处理的代码。 finallly为最终处理的代码段,是个可选项,如果包含有finally块,无论异常是否发生,finally块的代码必定执行。,2019/7/24,第6章 异常处理,7,6.2.1 异常的捕获与处理,【例6-2】异常的捕获与处理。 public class TryCatchTest public static void main(String args) int a=20,b=0,c; try System.out.println(“Before Exception”); c=a/b;System.out.println(“After Exception”); catch(ArrayIndexOutOfBoundsException e) System.out.println(“ArrayIndexOutOfBoundsException Access”); catch(ArithmeticException e) System.out.println(“ArithmeticException Access”); System.out.println(“Exception Access End”); 【程序解析】 从执行结果看,程序在c=a/b这一行产生了异常,该行称为异常的抛出点。由于产生的异常是ArithmeticException类型,因此流程转到相应的catch语句中,处理结束后转到try-catch语句的外部。程序运行结果如图6-2所示。,图6-2 异常的捕获与处理示意图,2019/7/24,第6章 异常处理,8,6.2.2 异常的抛出,通常异常是由系统自动捕获的。但程序员也可通过throw语句抛出异常。有时一个方法并不需要处理它所生成的异常,而是向上传递,由调用该方法的其他方法来捕获该异常,这时就要用到throws子句。 异常抛出用于指出程序当前行存在异常,当程序执行到throw语句时,流程就转向相匹配的异常处理语句,其下的代码不再执行,所在的方法也不再返回值。throw的执行点也称为异常抛出点。 throw语句的格式为: throw new 异常类名(“信息”) throws语句的格式相对复杂点,格式如下: 返值类型 方法名(形式参数列表) throws 异常列表 /方法体 格式中异常类名为系统异常类名或用户自定义的异常类名,“信息”是可选项。若提供该信息,toString()方法的返回值中将增加该信息内容。 格式throws声明的异常必须是Throwable类或其子类,用throws关键字声明的异常类还可以是实际抛出的异常类的父类。若某方法可能产生yuexcep1, yuexcep2和yuexcep3三种异常,它们都是parent-exception类的子类,那么除了可以声明抛出yuexcep1, yuexcep2和yuexcep3类之外,尚可简单地声明抛出parent-exception。 注:throw和throws语句不同,前者是一个独立的语句,而后者总是和方法定义结合使用的。,2019/7/24,第6章 异常处理,9,例6-4,【例6-4】异常的抛出程序。 class YUException extends Exception String delail; public YUException() /异常构造函数0 this.delail=“; public YUException(String s) /异常构造函数1 this.delail=s; String ShowExceptiondelail() return this.delail; /返回接收到的异常信息 public class ThrowExceptionEx public static void main(String args) try Test(); catch (YUException e) System.out.println(“我的YU异常类:“); System.out.println(“抛出的异常对象已被捕捉!“); System.out.println(“异常对象信息为:“+e.ShowExceptiondelail(); static void Test() throws YUException throw new YUException(“Test()暂且处理不了这个异常,交调用者处理!“); /抛出异常 /END,2019/7/24,第6章 异常处理,10,自定义异常类可以通过继承Exception类或它的子类实现。 自定格式为: class自定义异常类名extends Exception 异常类体; 总体上大致分为两步: (1)异常类的定义。例如: class useException extends Exception int n=0; useException() n+; useExceptions(String s) super(s);n+; String show() return”selfdefinedExceptionObj:”+n; (2)异常对象的定义,及对象的抛出。创建异常对象的格式是: 异常类型 对象名=new 异常构造函数(参数)。 在useException基础上,我们编写如下的程序。 public class testException static void Test() throws useException useException e=new useException(“selfdefinedExceptionObj”); throw e; public static void main(String args) try Test(); catch(useException e) System.out.println(e.show(); ,6.2.3 自定义异常,2019/7/24,第6章 异常处理,11,本章主要讲述了Java的异常处理机制,主要由try、catch、finally、throw和throws几个语句构成。异常处理是Java的一个优点,可以使程序员方便地进行错误处理,不至于因为发生异常导致系统崩溃,从而使系统更加健壮和友好。 思考和练习 1.何谓异常?Java是怎样处理异常问题的? 2.计算n!并捕获可能出现的IllegalAccessException、ArrayIndexOutOf

温馨提示

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

评论

0/150

提交评论