第6节 Java语言中的异常.ppt

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 Java语言中的异常 异常 为了加强程序的鲁棒性(强壮性,robust),程序设计时,必须考虑到可能发生的异常事件并做出相应的处理 例6-1 虽然程序的鲁棒性加强了,但结构臃肿,大量的错误处理代码混杂在程序中,可读性差。目标程序也会增大许多 出错返回信息量太少,无法更确切的了解错误状况或原因。特别是,当出现上述语句没包含的情况时,程序将束手无策 Java异常处理机制 预定义了Exception类。在Exception类中定义了程序产生异常的条件 简化了代码的编写。常见的异常也可以统一处理,提高了效率,代码重用率高 允许程序员自己编写特殊的异常处理程序,以满足更独特的需要 抛出和捕获 方法的运行过程中,如果发生了异常,称程序产生了一个异常事件,相应地生成异常对象。生成异常对象并把它提交给运行时系统的这一过程称为抛出(throw)异常 异常发生时,Java运行时系统从生成对象的代码块开始进行回溯,找到包含相应异常处理的方法,并把异常对象交给该方法处理,这一过程称为捕获(catch) 例6-2 用异常处理方式来重写例6-1 异常机制的优点 把异常处理代码从常规代码中分离出来,增加了可读性,方便修改 按异常类型和差别进行分组,即从预定义的类Exception中派生自己的子类,对无法预测的异常也可以进行捕获和处理,克服了传统方法中错误信息有限的问题 异常的处理借助于调用堆栈按先近后远的原则进行 异常传播方式 异常层次结构 使用异常机制情况 当方法因为自身无法控制的原因而不能完成其任务 文件不存在,网络连接无法建立等 处理在方法、类库、类中抛出的异常 如FileInputStream.read产生IOException; 在大的项目中采用统一的方式处理异常时 编写文字处理器一类的程序等; 不经常发生但却可能发生的故障 异常示例 简单扩展前面使用过的程序1-1的HelloWorldApp.java程序,循环打印一些信息。程序执行到第4次循环时,会发生异常代码见程序6-1 异常处理 try,catch和finally语句 例6-3 程序6-2示例 程序6-2改写了程序6-1。在程序中,捕获所发生的异常,将越界的下标重新置回0,然后让程序继续执行 公共异常 ArithmeticException 整数除法中,如果除数为0,则发生该类异常 NullPointerException 访问没有实例化的对象或调用它的方法 公共异常 NegativeArraySizeException 创建数组时,元素个数是个负数 ArrayIndexOutOfBoundsException 数组下标越界 SecurityException 一般在浏览器内抛出。 若Applet试图进行下述操作,则抛出此异常: 访问本地文件。 打开一个套接口,而不是返回到提供Applet的主机。 在运行时环境中运行另一个程序。 公共异常 ArrayStoreException 程序试图存取数组中错误的数据类型 FileNotFoundException 试图存取一个并不存在的文件 IOException 通常的I/O错误 异常分类 在Java中主要有三类异常。类java.lang.Throwable是使用异常处理机制可被抛出并捕获的所有异常对象的父类。它有三个基本子类,如图所示。 每个类使用的目的 Error 表示很难恢复的错误,如内存越界。交给系统处理为好 RuntimeException 用来表示设计或实现方面的问题,如数组越界等。因为设计和实现正确的程序不会引发这类异常,所以常常不处理它 发生这类异常时,运行时环境会输出一条信息,提示用户修正错误 其他 异常表示运行时因环境的影响可能发生并可被处理的问题。如文件没找到或不完整的URL等。程序员处理它们 抛出 如果一个方法确实引发了一个异常,那么在方法中必须写明相应的处理代码。 (Error或RuntimeException两类错误除外) 程序员处理异常有两种方法: 一种是使用try{}、catch(){}块,捕获到所发生的异常类,并进行相应的处理。catch块可以为空,表示对发生的异常不进行处理 另一种方法是,程序员不在当前方法内处理异常,而是把异常抛出到调用方法中。在说明方法时使用如下格式就可做到这一点 异常抛出 异常抛出格式 访问权限修饰符返回值类型方法名 (参数列表) throws 异常列表 创建自己的异常 用户自定义的所有异常类都必须是Exception的子类 在程序中发现异常情况时,可以抛出(throw)一个异常实例,将其放到异常队列中去,并激活Java的异常处理机制,如: 程序6-3 程序6-3

文档评论(0)

0520 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档