意外的情况-异常处理.ppt_第1页
意外的情况-异常处理.ppt_第2页
意外的情况-异常处理.ppt_第3页
意外的情况-异常处理.ppt_第4页
意外的情况-异常处理.ppt_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、第11章 意外的情况异常处理,11.1 异常处理的概念 11.2 Java异常的体系结构 11.3 Java程序中如何处理异常 11.4 定义自己的异常 11.5 编写健壮的Java程序 11.6 小结 11.7 习题,11.1 异常处理的概念,11.1.1 为什么要处理异常 11.1.2 异常处理的简单范例,11.1.1 为什么要处理异常,程序实际运行过程中肯定会遇到这样那样的偶然情况,实际执行当中不可能完全像我们当初设计程序时预想的那样准确无误地从头运行直到结束。当遇到这些情况的时候,我们的程序需要进行相应的处理,能够让程序尽可能正常运行下去,不要因为一处小小的意外导致程序不能正常工作或是

2、得到错误的结果。这就是异常处理的主要目的,让我们的Java程序适应能力变得更强,可以容忍一定的错误情况。 1Java程序中经常遇到的异常情况 2Java中如何处理异常 3异常与错误有什么区别,11.1.2 异常处理的简单范例,Java中异常处理的过程可以抽象为4个阶段: (1)异常发生。 (2)异常捕获。 (3)异常处理。 (4)恢复正常。 这个过程可以使用下面的流程图来表示, 请大家先看看图11.1中的流程图。 图11.1,11.2 Java异常的体系结构,11.2.1 Exception类及其子类 11.2.2 部分Java中的异常类的含义 11.2.3 Java中可能会抛出异常的方法,1

3、1.2.1 Exception类及其子类,Java中所有的异常类都是由java.lang. Exception类派生出来的,这就像所有的类都是由Object类派生出来一样。很自然,Exception类也是由Object类的子类Throwable类派生出来。需要告知大家的是,虽然这些异常类都是Exception类的子类,但它们可不一定包含在同一个包中哦!这是因为Java中的各种操作都有可能会发生异常,将所有的异常类放在一个包中是不现实的。 图11.2 Java异常处理流程图,11.2.2 部分Java中的异常类的含义,Java中的异常类有些类似上一章中讲的I/O类,它们之间的情况都是大同小异,适

4、合用在不同的异常情况下。给大家列出部分常用的,比较典型的异常类,通过它们来学习Java中的异常处理。下面我们将部分异常类的信息列到了下表中,请诸位过目先。,11.2.3 Java中可能会抛出异常的方法,下面的表中列举出几个会抛出异常的方法,我们先来看下这几个简单的异常吧!,11.3 Java程序中如何处理异常,11.3.1 捕获异常 11.3.2 获取异常信息 11.3.3 try、catch和finally 11.3.4 异常处理举例,11.3.1 捕获异常,现在我们来看如果Java程序的执行过程中遇到意外,抛出的异常如何被捕获。要想处理Java程序运行过程中抛出的异常,首先要捕获它们。前面

5、讲过异常处理的流程当中,try区块中的内容是异常产生并被抛出的地带。这里面产生的异常将由紧随其后的catch语句所捕获。 1多个catch语句的顺序,如图11.3所示 2在多层方法调用中的异常抛出顺序 ,如图11.4所示 图11.4 图11.3,11.3.2 获取异常信息,在捕获异常之后,处理异常之前,必然是要先得到异常的相关信息。这些信息不仅仅用来在程序的异常处理中用得着,它们最大的作用是可以帮助我们分析异常产生的原因,改善程序的设计。我们在捕获异常的时候,catch语句所接收的只有一个参数Java的异常对象。这也就意味着如果我们要想在catch语句捕获异常之后来获取异常信息时只能从异常对象

6、当中取得异常的相关信息。,11.3.3 try、catch和finally,我们已经知道Java的异常处理过程一共有3个大的部分:try, catch和finally。其中try区块是有可能发生异常的代码所存放的位置;它的后面可以跟一个或多个catch语句,这些catch语句各自负责处理自己所能够捕获的指定类型的异常。在try区块的后面必须紧跟catch语句,中间不能有其它任何代码,而且一个catch语句前面只能有一个try区块。 在catch语句的后面,可以有选择地加上finally区块。inally区块是不论是否有异常发生都会执行的部分。这部分的作用一般是用来释放系统的资源,或是将一些对象

7、的状态恢复到程序执行之前的样子,能让我们的程序保持一致性。,11.3.4 异常处理举例,前面已经将Java中异常处理的内容介绍完了,按照惯例我们在最后会给大家提供一个实例。这个例子当中我们所做的事情就是从终端几个学生的成绩,然后计算他们的总成绩和平均成绩,并将所有的数据都保存到一个文件中。学生的人数也是在程序最开始的时候由用户在终端上输入。整个过程中有多处需要进行异常处理的情况,一起来看看吧!,11.4 定义自己的异常,11.4.1 自己定义异常类 11.4.2 抛出异常 11.4.3 异常抛出实例,11.4.1 自己定义异常类,异常也是类,Java中能够定义自己的类,所以同样也能够定义自己的

8、异常!而且异常的定义过程跟普通类的定义其实没什么两样,唯一的区别在于,在定义异常类的时候必须写明要扩展Exception类或者它的任何一个子类。现在来看一下定义异常类的语法。 public class 异常类名称 extends Exception / 异常类的成员定义 ,11.4.2 抛出异常,在定义方法是声明所抛出异常的语法格式如下: 访问控制关键字 返回类型 方法名称( 参数列表 ) throws 异常1,异常2, / 方法的实现 现在来看看如何在一个方法当中抛出异常吧。抛出异常的语法很像return语句,它的格式是这样的: throw 异常对象名;,11.4.3 异常抛出实例,现在我们

9、可以来做个完整的Java异常处理的例子啦,前面的准备工作已经做得很到位,有了自己定义的异常类InvalidValueException,还知道如何在方法中抛出异常。现在我们就综合运用这些知识来写个带异常处理的程序例子。这次所做的事情同前面一样,只是我们异常处理的更加全面,这能够让我们的程序对用户输入的错误信息有更强的“抵抗力”。,11.5 编写健壮的Java程序,在异常处理的过程中,会有很多种方式与策略,究竟在什么情况下采用哪种异常处理办法,这还是值得讨论的话题。这一节中主要就是向大家介绍下这面的知识。 1异常处理的策略 2异常处理的例子,11.6 小结,这一章所讲的内容虽然与前面所讲的内容相差很大,但它却与前面各章节都有很大关系,几乎程序中的任何地方都会遇到异常情况的处理。在一开始,我们是从最基本的概念讲起的,介绍了这么多关于异常的内容,其实最终的目的只有一个,那就是编写健壮的Java程序。所谓健壮,是指程序对用户的操作,输入,或其它的参数,文件错误有一定的抵抗能力,不会因这些小问题导致程序出大麻烦。最后我

温馨提示

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

评论

0/150

提交评论