第5章 异常理.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 异常理

第5章 异常处理 编写程序,出现错误是不可避免的,如何处理错误,由谁来处理错误,如何从错误中恢复?这些问题是每种语言都要面对的问题。 Java语言认为那些可预料和不可预料的出错称为异常(Exception) 本章主要内容 5.1 异常概述 5.2 异常类型 5.3 抛出异常 5.4 捕捉并处理异常 5.1 异常概述 首先通过两个例子来了解什么是异常? 【例5.1】异常示例1。 【例5.2】异常示例2。 通过这两个例子,可以对异常下个定义:异常是在程序编译或运行中所发生的可预料或不可预料的异常事件,它会引起程序的中断,影响程序正常运行。出现在编译阶段的异常,称之为编译时异常,如例5.1中的异常,出现在运行阶段的异常,称之为运行时异常,如例5.2中的异常。 编译时异常一般由Java语言本身指出,计算机能自动帮助处理,不需要编程者单独处理;而运行时异常则从程序本身很难直观看出来,计算机也很难自动帮助处理,因此在编写程序时应有预先的声明,做出相应的处理,减少程序中断的可能,减少排除异常的困难。 一般运行时异常的排错比编译时异常的排错要困难得多,初学编程者要注意这方面的经验。本章所讲述的异常都是指运行时异常。 程序中有许多类型的错误会导致异常发生,从严重的硬件故障(如硬盘坏了)到简单的程序出错(数组越界,数据溢出)。 在Java语言中,异常机制是:一旦出现异常,可以由运行的方法或虚拟机生成一个异常对象,它包含异常事件的类型以及发生异常时程序的状态等信息。异常对象从产生和被传递提交给Java运行系统的过程称为抛出(throw)异常。 在Java运行时,如获得一个异常对象,它会自动寻找处理该异常的代码,它从生成异常对象的代码构件开始,沿着方法调用栈,按层回溯寻找,直至找到处理该类异常方法为止,再由Java运行系统将该异常对象交给该方法去处理,这一个过程称为捕获(catch)异常。 Java语言能按机制来接收并处理异常,要求所指异常对象必须是已定义好的异常类的实例。Java语言中的类库,已定义了许多可利用的异常类。异常对象用new来创建,一旦创建后,就停止当前的执行路径,再从当前环境中释放异常对象的地址,此时异常机制就接管一切,把程序转向异常处理器,去裁定程序是否能继续进行还是报错。 5.2 异常类型 根据异常的来源,可以把异常分为两种类型:系统定义的运行异常和用户自定义的异常。 系统定义的运行异常 Java中定义了很多异常类,每个异常类都代表了一种运行错误,类中包含了该运行错误的信息和处理错误的方法等内容。 每当Java程序运行过程中发生一个可识别的运行错误时,即该错误有一个异常类与之相对应时,系统都会产生一个相应的该异常类的对象,即产生一个异常。一旦一个异常对象产生了,系统中就一定有相应的机制来处理它,确保不会产生死机、死循环或其他对操作系统的损害,从而保证了整个程序运行的安全性。 Java的异常类是处理运行时错误的特殊类,每一种异常类对应一种特定的运行错误。所有的Java异常类都是系统类库中的Exception类的子类。其类继承结构如图5-1所示。 Exception类从父类Throwable那里还继承了若干方法,其中常用的方法如下。 (1)public String toString () toString ()方法返回描述当前Exception类信息的字符串。 (2)public void printStackTrace () printStackTrace ()方法没有返回值,它的功能是完成一个打印操作,在当前的标准输出(一般就是屏幕)上打印输出当前异常对象的堆栈使用轨迹,也即程序先后调用执行了哪些对象或类的哪些方法,使得运行过程中产生了这个异常对象。 Exception类有若干子类,每一个子类代表了一种特定的运行时错误。这些子类有些是系统事先定义好并包含在Java类库中的,称为系统定义的运行异常。 系统定义的运行异常通常对应着系统运行错误。由于这种错误可能导致操作系统错误甚至是整个系统的瘫痪,所以需要定义异常类来特别处理。下表中列出了若干常见的系统定义异常。 由于定义了相应的异常,Java程序即使产生一些致命的错误,如引用空对象等,系统也会自动产生一个对应的异常对象来处理和控制这个错误,避免其蔓延或产生更大的问题。 用户自定义的异常 系统定义的异常主要用来处理系统可以预见的较常见的运行错误,对于某个应用所特有的运行错误,则需要编程人员根据程序的特殊逻辑在用户程序里自己创建用户自定义的异常类和异常对象。这种用户自定义异常主要用来处理用户程序中特定的逻辑运行错误。 用户自定义异常用来处理程序中可能产生的逻辑错误,使得这种错误能够被系统及时识别并处理,而不致扩散产生更大的影响,从而使用户程序更为强

文档评论(0)

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

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

1亿VIP精品文档

相关文档