版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、面向对象程序设计基础,第7章 异常,主讲人:刘慧,学习目标: 异常的基本概念 Throwable类及其子类 运行时异常 捕获异常 声明异常 抛出异常 自定义异常 异常处理机制的优点 使用异常处理机制的一些原则,异常是在程序运行过程中发生的异常事件,比如除0溢出、数组越界、文件找不到等,这些事件的发生将阻止程序的正常运行。程序设计时,必须考虑到可能发生的异常事件并做出相应的处理。,7.1异常的基本概念,异常处理机制 在一个方法的运行过程中,如果发生了异常,则这个方法生成代表该异常的一个对象,并把它交给运行时系统,运行时系统寻找相应的代码来处理这一异常。,7.1异常的基本概念,把生成异常对象并把它
2、提交给运行时系统的过程称为抛出(throw)一个异常。 运行时系统在方法的调用栈中查找,从生成异常的方法开始进行回朔,直到找到包含相应异常处理的方法为止,这一个过程称为捕获(catch)一个异常。,7.2 Throwable类及其子类,7.2 Throwable类及其子类,Exception类对象是Java程序处理或抛出的对象。 (1)RunTimeException类及其继承类: java程序在运行时生成异常,如被0除、数组下标越界等,系统将它们交给缺省的异常处理程序。 (2)除此(RunTimeException)之外,其他的异常类:必须被捕获或被重新抛出,否则编译会错误。,7.2 Thr
3、owable类及其子类,Throwable类,Error类,Exception类,RunTimeException,ArithmeticException,ClassNotFoundException,AWTException,InterruptedException,IOException,ArrayIndexOutOfBoundsException,7.3 运行时异常,运行时异常是由Java运行时系统在程序的运行过程中检测到的,它可能在程序的任意部位发生,而且其数目可能很大,因此Java编译器允许程序不对它进行处理。这时,Java运行时系统会把生成的运行时异常对象交给缺省的异常处理程序,在
4、标准输出上显示异常的内容以及发生异常的位置。 RuntimeExceptionExample.java,7.4 捕获异常,可以用try-catch-finally语句来捕获一个或多个异常:,7.4 捕获异常,1. try语句 try语句用大括号指定了一段代码,该段代码可能会抛出一个或多个异常,同时,该段代码也指定了它后面的catch语句所捕获的异常的范围。 例: try int a=1,2,3,4,5; int sum=0; for(int i=0;i=5;i+) sum=sum+ai; System.out.println(sum); ,7.4 捕获异常,2. catch语句 (1)、异常类
5、型必须为Throwable类的子类,它指明了catch语句所处理的异常类型。 (2)、异常对象则由运行时系统在try所指定的代码块中生成并被捕获。 (3)、大括号中包含对象的处理,其中可以调用对象的方法。,(4)、 catch语句可以有多个,分别处理不同类的异常。 (5)、 catch语句的排列顺序应该是从特殊到一般。 (6)、一个catch语句处理多个异常类型,这时它的异常类型参数应该是这多个异常类型的父类,程序设计中要根据具体的情况来选择catch语句的异常处理类型,7.4 捕获异常,金属垃圾,塑料垃圾,玻璃垃圾,废纸垃圾,垃圾桶,7.4 捕获异常,3. finally语句 无论try所指
6、定的程序块中抛出或不抛出异常,也无论catch语句的异常类型是否与所抛出的异常的类型一致,finally所指定的代码都要被执行,它提供了统一的出口。 通常在finally语句中可以进行资源的清除工作。如关闭打开的文件等。,7.5 声明异常,在方法中使用try-catch-finally可以由这个方法来处理它所生成的异常。在有些情况下,一个方法并不需要处理它所生成的异常,而是向上传递,由调用它的方法来处理这些异常,这时就要用到throws子句,它包含在方法的声明中。,例: static void fun( int sel ) throws ArithmeticException,ArrayInd
7、exOutOfBoundsException 在fun()方法中生成的异常通过调用栈传递给main()方法,由main()方法进行处理。 注意:对非运行时异常,必须捕获或声明。,7.6 抛出异常,在捕获一个异常前,必须有一段Java代码生成一个异常对象并把它抛出。通过throw语句来实现。 throw语句的格式为:throw ThrowableObject; 其中ThrowableObject必须为Throwable类或其子类的对象。 例: throw new arithmeticExcption(); 抛出一个算术异常。 另外,我们还可以定义自己的异常类,并用throw语句来抛出它。,7.7
8、 自定义异常,创建用户自定义异常的语法格式如下: class 自定义异常 extends 父类异常名 例: class MyException extends Exception MyException(String msg) super(msg); MyException() ,7.8 异常处理机制的优点,Java通过面向对象的方法进行异常处理,把各种不同的异常事件进行分类,体现了良好的层次性,提供了良好的接口,这种机制对于具有动态运行特性的复杂程序提供了强有力的控制方式。 2. Java的异常处理机制使得处理异常的代码和“常规”代码分开,减少了代码的数量,增强了程序的可读性。(大家可以比较
9、一下用if语句来处理异常的情形,这时需要进行一系列条件的判定)。 3. Java的异常处理机制使得异常事件可以沿调用栈自动向上传播,而不是C语言中通过函数的返回值来传播,这样可以传递更多的信息并且简化代码的编写。 4. 由于把异常事件当成对象来处理,利用类的层次性我们可以把多个具有相同父类的异常统一处理,也可以区分不同的异常分别处理,使用非常灵活。,7.8 使用异常处理机制的一些原则,1.对非运行时异常必须捕获或声明,而对运行时异常则不必,可以交给Java运行时系统来处理。 2.对于自定义的异常类,通常把它作为类Exception子类,而不作为类Error的子类,因为Error类通常用于系统内严重的硬件错误。并且在多数情况下,不要把自定义的异常类作为运行时异常类RuntimeException子类。另外,自定义异常类的类名常常以Exception结尾。 3.在捕获或声明异常时,要选取合适类型的异常类,注意异常的类层次,根据不同的情况使用一般或特殊的异常类。 根据具体的情况选择在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 谷物谷雨活动方案策划(3篇)
- 选拔球员策划活动方案(3篇)
- 钢板灰库施工方案(3篇)
- 防雷需要专项施工方案(3篇)
- 预防会议的营销方案(3篇)
- 高速道路养护施工方案(3篇)
- 26年老年婚姻权益保护法规课件
- 胃炎护理中的液体管理
- 肠息肉术后护理经验分享
- 幼儿园地震避险指南
- 2026湖北神农架林区公安局招聘辅警22人备考题库完整参考答案详解
- 达州市2026年面向高校毕业生招聘园区产业发展服务专员(37人)笔试参考题库及答案解析
- 2025年江西大学生村官招录考试笔试试题及答案解析
- 2026广东惠州市惠城区桥东街道招聘党建联络员和村(社区)“两委”班子储备人选补充笔试备考题库及答案详解
- 第13课 辽宋夏金元时期的对外交流 课件
- 《预算执行常态化监督发现问题纠偏整改操作指南(试行)》
- 2026年“建安杯”信息通信建设行业安全竞赛核心考点题库
- T-CCSAS 062-2026《行为安全观察与沟通实施指南》
- 备战2026河南中考英语:补全对话7大场景高频问句及答语梳理+解题技巧
- 应急演练组织规范及流程
- 砖混转框架施工方案样本
评论
0/150
提交评论