- 1、本文档共31页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 异常 异常(exception)是在运行时代码序列中产生一种异常情况。也就是,异常是一个运行时错误。在不支持异常处理的计算机语言中,错误必须被手工检查和处理。这种方法既很笨拙也很麻烦。Java的异常处理避免了这些问题,而且在处理过程中,把运行时错误的管理带到了面向对象的世界。 【学习目标】 了解异常的类体系结构,检查和非检查型异常。能够根据设计中的实际需要设计异常类,并在程序中抛出和捕获处理异常。 【本章知识点】 异常的概念 使用try,catch 和finally 语句 描述异常分类 开发程序来处理自己的异常 第4章 异常 4.1 异常概述 4.2 异常的分类 4.3 异常的处理 4.4 自定义异常 4.1 异常概述 4.1.1 什么是异常 4.1.2 异常发生的原因 4.1.3 异常处理机制 4.1.1 什么是异常 什么是异常?在Java 编程语言中,异常就是在程序的运行过程中所发生的非正常情况,又称例外。异常发生时会中断指令的正常执行,Java中提供了一种独特的异常机制来处理程序运行中出现的错误。这样,Java程序可以用代码来处理异常并继续执行程序,而不是让程序中断。 4.1.2 异常发生的原因 在程序执行中,任何中断正常程序流程的情况都是错误或异常。例如,发生下列情况时,会出现异常: 程序正在打开某个文件,而文件不存在; - 需要访问网络资源,而网络连接是中断的; - 受控操作数超出预定范围; - 非常感兴趣地正在装载的类文件丢失。 Java中所有的异常都由类来表示,所有的异常类都是从一个名为Throwable的类派生出来的。因此,当程序中发生一个异常时,就会生成一个异常类的某种类型的对象。Throwable有两个直接子类:Exception和Error。 在Java 编程语言中,与错误类(Error)相关的错误发生在Java虚拟机中,而不是在程序中。Error类定义了被认为是不能恢复的严重错误条件。在大多数情况下,当遇到这样的错误时,建议让程序中断。 4.1.2 异常发生的原因 由程序运行所导致的错误由Exception类来表示,该类定义了程序中可能遇到的一般性错误条件。在程序中发生错误时,发现错误的方法能抛出一个异常到其调用程序,发出已经发生问题的信号。然后,调用方法捕获抛出的异常,在可能的情况下,再恢复回来。 这个方案给程序员一个写处理程序的选择,来处理异常。通过查询Java编程接口,可以决定方法抛出的是什么样的异常。 例4.1 是一个HelloWorld.java 程序版本的简单扩展,它通过数组来循环。注意一下代码中关于数组的长度。在这里数组的访问是越界的。 程序如下: /** 文件:HelloWorld.java 说明:《Java实用教程》例4.1 4.1.2 异常发生的原因 **/ public class HelloWorld { public static void main (String args[]) { int i = 0; String greetings [] = {Hello world!, No, I mean it!, HELLO WORLD!! }; while (i 4) { System.out.println (greetings[i]); i++; 4.1.2 异常发生的原因 } } } 程序运行结果如图4-1所示。 4.1.2 异常发生的原因 程序说明: 该程序是一个很简单明了的程序,其中数组greetings的长度是3,索引分别是0,1,2。在while循环中,当i=3时,将产生数组越界访问,这是一个运行期异常,所以main方法将中止运行,并抛出异常,并带有错误信息,就象前面所示的程序那样。 异常处理允许程序捕获异常,处理它们,然后继续程序执行。它是分层把关,因此,错误情况不会介入到程序的正常流程中。特殊情况发生时,在与正常执行的代码分离的代码块中被处理。这就产生了更易识别和管理的代码。 4.1.3 异常处理机制 Java中的异常处理机制可以概括为以下几个过程: Java已经将各种错误对应地划分为若干个异常类,在Java程序的执行过程中,运行时系统随时对它进行监控,如果出现异常,则会自动生成一个异常对象,该异常对象将被提交给Java运行时系统,这个过程称为抛出异常。抛出异常也可以由程序来强制进行。 当Java运行时系统接受到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。 当Java运行时系统找不到可以捕获异常的方法时,则将中止,相应的Java程序也将退出。 Java的处理机制就是由抛出异常和捕获异常两部分
文档评论(0)