第5章异常处理.ppt

上传人:可****阿 文档编号:75316879 上传时间:2023-03-03 格式:PPT 页数:33 大小:208.50KB
返回 下载 相关 举报
第5章异常处理.ppt_第1页
第1页 / 共33页
第5章异常处理.ppt_第2页
第2页 / 共33页
点击查看更多>>
资源描述

《第5章异常处理.ppt》由会员分享,可在线阅读,更多相关《第5章异常处理.ppt(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、面向对象的程序设计第第5章章异常处理异常处理雷擎雷擎对外经济贸易大学信息学院对外经济贸易大学信息学院面向对象的程序设计对外经济贸易大学 雷擎content5.1 异常的概念异常的概念5.2 异常的类型异常的类型5.3 JAVA的异常处理机制的异常处理机制5.4 异常对象异常对象5.5 用户定义异常用户定义异常5.6 断言的使用断言的使用实验:异常处理实验:异常处理面向对象的程序设计对外经济贸易大学 雷擎5.1异常的概念异常的概念o异常实际上是程序中错误导致中断了正常异常实际上是程序中错误导致中断了正常的指令流的一种事件的指令流的一种事件read-file read-file openTheFi

2、le;openTheFile;determine its size;determine its size;allocate that much memory;allocate that much memory;closeTheFile;closeTheFile;面向对象的程序设计对外经济贸易大学 雷擎o异常的基本概念异常的基本概念n又称为例外,是特殊的运行错误对象又称为例外,是特殊的运行错误对象n是面向对象规范的一部分,是异常类的对象是面向对象规范的一部分,是异常类的对象nJava中声明了很多异常类,每个异常类都代表了一中声明了很多异常类,每个异常类都代表了一种运行错误,类中包含了种运行错误,

3、类中包含了o该运行错误的信息该运行错误的信息o处理错误的方法处理错误的方法n每当每当Java程序运行过程中发生一个可识别的运行错程序运行过程中发生一个可识别的运行错误时,即该错误有一个异常类与之相对应时,系统误时,即该错误有一个异常类与之相对应时,系统都会产生一个相应的该异常类的对象,即产生一个都会产生一个相应的该异常类的对象,即产生一个异常异常异常处理的意义异常处理的意义面向对象的程序设计对外经济贸易大学 雷擎oJava异常处理机制的优点异常处理机制的优点n将错误处理代码从常规代码中分离出来将错误处理代码从常规代码中分离出来n按错误类型和差别分组按错误类型和差别分组n对无法预测的错误的捕获和

4、处理对无法预测的错误的捕获和处理n克服了传统方法的错误信息有限的问题克服了传统方法的错误信息有限的问题n把错误传播给调用堆栈把错误传播给调用堆栈面向对象的程序设计对外经济贸易大学 雷擎5.2异常的类型异常的类型oJava把异常当作对象来处理,并定义一个把异常当作对象来处理,并定义一个基类基类java.lang.Throwable作为所有异作为所有异常的超类。常的超类。o异常类分为两大类异常类分为两大类:Error和和Exception面向对象的程序设计对外经济贸易大学 雷擎Error和和Exceptiono根据错误的严重程度不同,可分为两类根据错误的严重程度不同,可分为两类n错误错误Error

5、o致命性的,用户程序无法处理致命性的,用户程序无法处理oError类是所有错误类的父类类是所有错误类的父类n异常异常Exceptiono非致命性的,可编制程序捕获和处理非致命性的,可编制程序捕获和处理oException类是所有异常类的父类类是所有异常类的父类Error:面向对象的程序设计对外经济贸易大学 雷擎异常异常Exception的分类的分类o非检查型异常非检查型异常n不能期望程序捕获的异常不能期望程序捕获的异常(例如数组越界,除零等例如数组越界,除零等)n继承自继承自RuntimeExceptionn在方法中不需要声明,编译器也不进行检查在方法中不需要声明,编译器也不进行检查o检查型异

6、常检查型异常n其他类型的异常其他类型的异常n如果被调用的方法抛出一个类型为如果被调用的方法抛出一个类型为E的检查型异常,的检查型异常,那么调用者必须捕获那么调用者必须捕获E或者也声明抛出或者也声明抛出E(或者(或者E的的一个父类),对此编译器要进行检查一个父类),对此编译器要进行检查面向对象的程序设计对外经济贸易大学 雷擎Java异常体系结构异常体系结构面向对象的程序设计对外经济贸易大学 雷擎Java的异常处理类继承结构的异常处理类继承结构oThrowable类是所有异常类的祖先类类是所有异常类的祖先类oError类及其子类,通常表示系统运行时与类及其子类,通常表示系统运行时与硬件相关的致命异

7、常硬件相关的致命异常oException为运行时异常类和用户自定义为运行时异常类和用户自定义异常类的父类异常类的父类n运行时异常,通常由系统抛出运行时异常,通常由系统抛出面向对象的程序设计对外经济贸易大学 雷擎异常处理种类异常处理种类o常见的运行时异常介绍(非检查型异常)常见的运行时异常介绍(非检查型异常)nArithmeticException算术运算异常,除零算术运算异常,除零溢出溢出nNullPointerException空指针异常,复合数空指针异常,复合数据类型变量引用时尚未创建据类型变量引用时尚未创建nClassCastException造型异常造型异常nNegativeArray

8、SizeException数组长度为数组长度为负异常负异常nArrayIndexOutofBoundsException数数组索引越界异常组索引越界异常面向对象的程序设计对外经济贸易大学 雷擎异常处理种类异常处理种类o常见的运行时异常介绍(检查型异常)常见的运行时异常介绍(检查型异常)nFileNotFoundExceptiono试图存取一个并不存在的文件试图存取一个并不存在的文件nIOExceptiono通常的通常的I/O错误错误面向对象的程序设计对外经济贸易大学 雷擎5.3JAVA的异常处理机制的异常处理机制5.3.1捕获异常捕获异常5.3.2抛出异常抛出异常5.3.3异常处理的策略异常处

9、理的策略面向对象的程序设计对外经济贸易大学 雷擎o抛出抛出(throw)异常异常n在方法的运行过程中,如果发生了异常,则该在方法的运行过程中,如果发生了异常,则该方法生成一个代表该异常的对象并把它交给运方法生成一个代表该异常的对象并把它交给运行时系统,运行时系统便寻找相应的代码来处行时系统,运行时系统便寻找相应的代码来处理这一异常理这一异常o捕获捕获(catch)异常异常n运行时系统在方法的调用栈中查找,从生成异运行时系统在方法的调用栈中查找,从生成异常的方法开始进行回溯,直到找到包含相应异常的方法开始进行回溯,直到找到包含相应异常处理的方法为止常处理的方法为止java处理异常的方法处理异常的

10、方法面向对象的程序设计对外经济贸易大学 雷擎Method4Method3Method2Method1探测抛出异常捕获处理异常调用异常处理示意图异常处理示意图面向对象的程序设计对外经济贸易大学 雷擎5.3.1捕获异常捕获异常面向对象的程序设计对外经济贸易大学 雷擎otry语句语句n其后跟随可能产生异常的代码块其后跟随可能产生异常的代码块ocatch语句语句n其后跟随异常处理语句,通常用到两个方法其后跟随异常处理语句,通常用到两个方法ogetMessage()返回一个字符串对发生的异常返回一个字符串对发生的异常进行描述。进行描述。oprintStackTrace()给出方法的调用序列,给出方法的调

11、用序列,一直到异常的产生位置一直到异常的产生位置ofinally语句语句n不论在不论在try代码段是否产生异常,代码段是否产生异常,finally后的后的程序代码段都会被执行。通常在这里释放内存程序代码段都会被执行。通常在这里释放内存以外的其他资源以外的其他资源面向对象的程序设计对外经济贸易大学 雷擎try语句语句o捕获异常的第一步是用捕获异常的第一步是用try选定捕获异选定捕获异常的范围,所有可能抛出异常的语句都放入常的范围,所有可能抛出异常的语句都放入try模块中。模块中。面向对象的程序设计对外经济贸易大学 雷擎catch语句语句o每个每个try代码块可以伴随一个或多个代码块可以伴随一个或

12、多个catch语句,用于处理语句,用于处理try代码块中所生成的异常代码块中所生成的异常事件。事件。otry-catch-finally语句中可以存在多个语句中可以存在多个catch语句块,对多个不同的异常进行不同语句块,对多个不同的异常进行不同的处理的处理n多多catch语句捕获异常的顺序与书写顺序一致语句捕获异常的顺序与书写顺序一致n多个多个catch语句捕获的异常按语句捕获的异常按“先特殊后一般先特殊后一般”的原则排序的原则排序面向对象的程序设计对外经济贸易大学 雷擎o所有的异常都可以被以下语句捕获:所有的异常都可以被以下语句捕获:catch(Exceptione)System.out.

13、println(“caughtanexception!”)面向对象的程序设计对外经济贸易大学 雷擎finally语句语句o无论无论try-catch语句中是否出现异常,最终语句中是否出现异常,最终都会执行都会执行finally块里面的内容,只有当块里面的内容,只有当try从句或者从句或者catch()从句中有从句中有System.exit()语句时,语句时,finally()不会被执行。不会被执行。面向对象的程序设计对外经济贸易大学 雷擎异常处理种类异常处理种类o异常捕获和处理异常捕获和处理ntry-catch-finally语句中可以存在多个语句中可以存在多个catch语句块,对多个不同的异

14、常进行不同的处理语句块,对多个不同的异常进行不同的处理n多多catch语句捕获异常的顺序与书写顺序一致语句捕获异常的顺序与书写顺序一致n多个多个catch语句捕获的异常按语句捕获的异常按“先特殊后一般先特殊后一般”的原则排序的原则排序面向对象的程序设计对外经济贸易大学 雷擎5.3.2抛出异常抛出异常o对于处理不了的异常或者要转型的异常,在对于处理不了的异常或者要转型的异常,在方法中通过方法中通过throws和和throw语句抛出异常。语句抛出异常。othrow关键字关键字n用于方法体内部,用来抛出一个用于方法体内部,用来抛出一个Throwable类类型的异常。型的异常。othrows关键字关键

15、字n用于方法体外部的方法声明部分,用来声明方用于方法体外部的方法声明部分,用来声明方法可能会抛出某些异常。法可能会抛出某些异常。面向对象的程序设计对外经济贸易大学 雷擎5.3.3异常处理的策略异常处理的策略o不要忽略不要忽略checkedExceptiono不要一次捕获所有的异常不要一次捕获所有的异常o使用使用finally块释放资源块释放资源o异常不能影响对象的状态异常不能影响对象的状态o丢失的异常丢失的异常o不要使用同时使用异常机制和返回值来进行不要使用同时使用异常机制和返回值来进行异常处理异常处理o不要让不要让try块过于庞大块过于庞大面向对象的程序设计对外经济贸易大学 雷擎5.4异常对

16、象异常对象oThrowable类是类是Java语言中所有错误或语言中所有错误或异常的超类。只有当对象是此类(或其子类异常的超类。只有当对象是此类(或其子类之一)的实例时,才能通过之一)的实例时,才能通过Java虚拟机或虚拟机或者者Javathrow语句抛出。语句抛出。o两个子类两个子类Error和和Exception的实例,通的实例,通常用于指示发生了异常情况。常用于指示发生了异常情况。面向对象的程序设计对外经济贸易大学 雷擎5.5用户定义异常用户定义异常o编写自定义异常类实际上是继承一个编写自定义异常类实际上是继承一个API标标准异常类,用新定义的异常处理信息覆盖原准异常类,用新定义的异常处

17、理信息覆盖原有信息的过程。有信息的过程。o编写自定义异常类的模式如下编写自定义异常类的模式如下:面向对象的程序设计对外经济贸易大学 雷擎publicclassCustomExceptionextendsException/或者继承任何标准异常类或者继承任何标准异常类publicCustomException()/用来创建无参数对象用来创建无参数对象publicCustomException(Stringmessage)/用来创建指定参数对象用来创建指定参数对象super(message);/调用超类构造器调用超类构造器当然也可选用当然也可选用Throwable作为超类。作为超类。面向对象的程序

18、设计对外经济贸易大学 雷擎5.6断言的使用断言的使用oJ2SE1.4在语言上提供了一个新特性,就在语言上提供了一个新特性,就是是assertion(断言断言)功能,在软件开发中,功能,在软件开发中,assertion是一是一种经典的调试、测试方式种经典的调试、测试方式.面向对象的程序设计对外经济贸易大学 雷擎小结小结5.1 异常的概念异常的概念5.2 异常的类型异常的类型5.3 JAVA的异常处理机制的异常处理机制5.4 异常对象异常对象5.5 用户定义异常用户定义异常5.6 断言的使用断言的使用面向对象的程序设计对外经济贸易大学 雷擎实验:异常处理实验:异常处理o实验实验9:异常处理:异常处理BACK面向对象的程序设计对外经济贸易大学 雷擎知识点提示:知识点提示:o理解理解n异常和错误的概念异常和错误的概念n异常处理机制异常处理机制o掌握继承掌握继承ntry/catch/finally类的使用类的使用nthrow和和throws的使用的使用n自定义异常类自定义异常类面向对象的程序设计对外经济贸易大学 雷擎知识点提示:知识点提示:o掌握抽象类掌握抽象类n抽象类的定义抽象类的定义o掌握接口掌握接口n接口的定义接口的定义n接口的继承与多继承接口的继承与多继承n接口的实现方法接口的实现方法n多态的体现多态的体现面向对象的程序设计EndofChapter3

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁