电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

面向对象程序设计-java语言07

51页
  • 卖家[上传人]:第***
  • 文档编号:48883993
  • 上传时间:2018-07-21
  • 文档格式:PPT
  • 文档大小:250.50KB
  • / 51 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、第7章 异常处理编写程序,出现错误是不可避免的,如何 处理错误,由谁来处理错误,如何从错误 中恢复?这些问题是每种语言都要面对的 问题。 Java语言认为那些可预料和不可预 料的出错称为异常(Exception) 本章主要内容7.1 异常概述 7.2 异常类型 7.3 抛出异常 7.4 捕捉并处理异常 7.1 异常概述首先通过两个例子来了解什么是 异常? 【例7.1】异常示例1。 【例7.2】异常示例2。 通过这两个例子,可以对异常下 个定义:异常是在程序编译或运 行中所发生的可预料或不可预料 的异常事件,它会引起程序的中 断,影响程序正常运行。出现在 编译阶段的异常,称之为编译时 异常,如例7.1中的异常,出现在 运行阶段的异常,称之为运行时 异常,如例7.2中的异常。编译时异常一般由Java语言本身 指出,计算机能自动帮助处理, 不需要编程者单独处理;而运行 时异常则从程序本身很难直观看 出来,计算机也很难自动帮助处 理,因此在编写程序时应有预先 的声明,做出相应的处理,减少 程序中断的可能,减少排除异常 的困难。一般运行时异常的排错比编译时异 常的排错要困难得多,初学编程者 要注

      2、意这方面的经验。本章所讲述 的异常都是指运行时异常。 程序中有许多类型的错误会导致异 常发生,从严重的硬件故障(如硬 盘坏了)到简单的程序出错(数组 越界,数据溢出)。 在Java语言中,异常机制是:一 旦出现异常,可以由运行的方法 或虚拟机生成一个异常对象,它 包含异常事件的类型以及发生异 常时程序的状态等信息。异常对 象从产生和被传递提交给Java运 行系统的过程称为抛出(throw) 异常。 在Java运行时,如获得一个异常 对象,它会自动寻找处理该异常 的代码,它从生成异常对象的代 码构件开始,沿着方法调用栈, 按层回溯寻找,直至找到处理该 类异常方法为止,再由Java运行 系统将该异常对象交给该方法去 处理,这一个过程称为捕获( catch)异常。 Java语言能按机制来接收并处理异常 ,要求所指异常对象必须是已定义好 的异常类的实例。Java语言中的类库 ,已定义了许多可利用的异常类。异 常对象用new来创建,一旦创建后, 就停止当前的执行路径,再从当前环 境中释放异常对象的地址,此时异常 机制就接管一切,把程序转向异常处 理器,去裁定程序是否能继续进行还 是报错。 7.2

      3、 异常类型根据异常的来源,可以把异常分为两种类型: 系统定义的运行异常和用户自定义的异常。系统定义的运行异常 Java中定义了很多异常类,每个异常 类都代表了一种运行错误,类中包含 了该运行错误的信息和处理错误的方 法等内容。 每当Java程序运行过程中发生一个可 识别的运行错误时,即该错误有一个 异常类与之相对应时,系统都会产生 一个相应的该异常类的对象,即产生 一个异常。一旦一个异常对象产生了 ,系统中就一定有相应的机制来处理 它,确保不会产生死机、死循环或其 他对操作系统的损害,从而保证了整 个程序运行的安全性。 Java的异常类是处理运行时错误 的特殊类,每一种异常类对应一 种特定的运行错误。所有的Java 异常类都是系统类库中的 Exception类的子类。其类继承结 构如图7-1所示。 IllegalAccessExceptionClass NotFoundExceptionInterruptidExceptio nIOExceptionError类AWTExceptionException类RuntimeExceptionThrowable类Exception类从父类Th

      4、rowable那里还 继承了若干方法,其中常用的方法 如下。 (1)public String toString () toString ()方法返回描述当前 Exception类信息的字符串。 (2)public void printStackTrace ()printStackTrace ()方法没有返回值 ,它的功能是完成一个打印操作 ,在当前的标准输出(一般就是 屏幕)上打印输出当前异常对象 的堆栈使用轨迹,也即程序先后 调用执行了哪些对象或类的哪些 方法,使得运行过程中产生了这 个异常对象。Exception类有若干子类,每一个子类代 表了一种特定的运行时错误。这些子类 有些是系统事先定义好并包含在Java类 库中的,称为系统定义的运行异常。 系统定义的运行异常通常对应着系统运 行错误。由于这种错误可能导致操作系 统错误甚至是整个系统的瘫痪,所以需 要定义异常类来特别处理。表7-1中列出 了若干常见的系统定义异常。 系统定义的运行异常异常对应的系统运行错误ClassNotFoundException未找到欲装载使用的类ArrayIndexOutOfBoundsExceptio

      5、n数组越界使用NegativeArraySizeException定义数组大小为负数FileNotFoundException未找到指定的文件或目录IOException输入、输出错误表7-1 系统定义的运行异常NullPointerExcepti on引用空的尚无内存空间的对 象ArithmeticExceptio n算术错误 ,如除数为0InterruptedExcepti on线程在睡眠、等待或因其他 原因暂停时被其他线程打 断 UnknownHostExce ption无法确定主机的IP地址SecurityException安全性错误,如Applet欲读 写文件MalformedURLExc eptionURL格式错误由于定义了相应的异常,Java程 序即使产生一些致命的错误,如 引用空对象等,系统也会自动产 生一个对应的异常对象来处理和 控制这个错误,避免其蔓延或产 生更大的问题。 用户自定义的异常 系统定义的异常主要用来处理系统 可以预见的较常见的运行错误,对 于某个应用所特有的运行错误,则 需要编程人员根据程序的特殊逻辑 在用户程序里自己创建用户自定义 的异常类和异常对象

      6、。这种用户自 定义异常主要用来处理用户程序中 特定的逻辑运行错误。用户自定义异常用来处理程序中 可能产生的逻辑错误,使得这种 错误能够被系统及时识别并处理 ,而不致扩散产生更大的影响, 从而使用户程序更为强健,有更 好的容错性能,并使整个系统更 加安全稳定。创建用户自定义异常时,一般需要完 成如下的工作: (1)声明一个新的异常类,使之以 Exception类或其他某个已经存在的系 统异常类或用户异常类为父类。 (2)为新的异常类定义属性和方法, 或重载父类的属性和方法,使这些属 性和方法能够体现该类所对应的错误 的信息。例如,定义一个处理除数为0异常类,该 类能够更详细地描述错误发生的原因: class MyException extends ArithmeticException public MyException(String str)super(“这是自定义的专门处理除数为0 的类,被除数“+str+“不能为0“); 7.3 抛出异常Java程序在运行时如果引发了一个可识别 的错误,就会产生一个与该错误相对应的 异常类的对象,这个过程被称为异常的抛 出。它分为由系统自动抛出异

      7、常、通过 throw抛出异常以及通过throws抛出异常三 种情况。 系统自动抛出异常所有系统定义的运行异常都可以 由系统自动抛出。下面的例7.3程 序将测试数组下标越界时出现的 异常。通过这个例子可以了解如 何使用系统定义的运行异常。 【例7.3】系统自动抛出异常。 注意:系统采用默认处理方式显示的异 常信息和printStackTrace()方法显 示异常信息一样,将异常类型及 出现异常的位置全部追踪显示出 来。利用throw语句抛出异常 系统定义的异常既可以自动抛出,也可 以由throw语句抛出,而用户程序自定义 的异常不可能依靠系统自动抛出,而必 须借助于throw语句来定义何种情况算是 产生了此种异常对应的错误,并应该抛 出这个异常类的新对象。用throw语句抛 出异常对象的语法格式为: throw exceptionObject;【例7.4】利用throw语句抛出系统 定义的异常。 注意:一般这种抛出异常的语句应该被定 义为在满足一定条件时执行,例如 把throw语句放在if语句的if分支中 ,只有当if条件得到满足,即用户 定义的逻辑错误发生时才执行。利用throws语句

      8、抛出异常在有些情况下,不需要一个方法 本身来处理异常,而是希望把异 常向上移交给调用这个方法的方 法来处理,在这种情况下则需要 通过throws语句来实现。Throws语 句的格式如下:修饰符 返回类型 方法名 ( 参数列表 ) throws 异常类名列表 throw 异常类名; 注意:含有throw语句的方法,应该在方法 头定义中增加如下部分: throws 异常类名列表这样做主要是为了通知所有欲调 用此方法的方法。由于该方法包 含throw语句,所以要准备接受和 处理它在运行过程中可能会抛出 的异常。如果方法中的throw语句 不止一个,方法头的异常类名列 表也不止一个,则语句中应该包 含所有可能产生的异常。7.4 捕捉并处理异常当程序运行发生异常时,首先要抛出异常,抛出的异 常被捕捉到后,才能对异常进行相应处理。 在大多数情况下,系统预设的异常处理方法只会输出 一些简单的信息到显示器上,然后结束程序的执行, 如前面所有的异常处理示例程序。这样的处理方式在 许多情况下并不能满足我们的要求。Java语言为我们 提供了try.catch语句和try.catch.finally语句捕捉并

      9、 处理异常,它们能够明确地捕捉某种类型的异常,并 按我们的要求加以适当的处理,这才是发挥异常处理 机制的最佳方式。 利用try.catch语句捕捉并处理异常 1try.catch语句格式 try statements catch (ExceptionType1 ExceptionObject) Exception Handling catch(ExceptionType2 ExceptionObject) Exception Handling catch(ExceptionType n ExceptionObject) Exception Handling 语句的程序框图如图7-2所示。有异常try执行catch无异常一个try块后面可能会跟着若干个 catch块,每个catch块都有一个异常 类名作为参数。当try块抛出一个异 常时,程序的流程首先转向第一个 catch块,并审查当前异常对象可否 为这个catch块所接收。一个异常对 象能否被一个catch语句块所接收, 主要看该异常对象与catch块的异常 参数的匹配情况。 当它们满足下面3个条件的任何一个 时,异常对象将被接收。 (1)异常对象与参数属于相同的异常 类。 (2)异常对象属于参数异常类的子类 。 (3)异常对象实现了参数所定义的接 口。如果try语句块产生的异常对象被 第一个catch块所接收,则程序的 流程将直接跳转到这个catch语句 块中,catch语句块执行完毕后就 退出当前方法,try块中尚未执行 的语句和其他的catch块将被忽略 。如果try语句块产生的异常对象与第 一个catch块不匹配,系统将自动转 到第二个catch块进行匹配,如果第 二个仍不匹配,就转向第三个 直到找到一个可以接收该异常对象 的catch块,即完成流程的跳转。 如果所有的catch块都不能与当前的 异常对象匹配,则说明当前方法不 能处理这个异常对象,程序流程将返回到调用该方法的上层 方法。如果这个上层方法中定义了与 所产生的异常对象相匹配的catch块, 流程就跳转到这个catch块中;否则继 续回溯更上层的方法。如果所有的方 法中都找不到合适的catch块,则由 Java运行系统来处

      《面向对象程序设计-java语言07》由会员第***分享,可在线阅读,更多相关《面向对象程序设计-java语言07》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.