版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章异常处理5.1异常的概念及处理办法异常是指发生在正常情况以外的事件例如用户输入错误、除数为零、需要的文件不存在、文件打不开、数组下标越界、内存不足等等。计算机系统对于异常的处理通常有两种办法:1.计算机系统本身直接检测程序中的错误,遇到错误时终止程序执行。2.由程序员在程序设计中加入处理异常的功能。异常处理的好处1.把各种不同的异常进行分类,并提供了良好的接口。这种机制为复杂程序提供了强有力的控制方式。产生异常和处理异常由系统专门的程序加以控制,减少系统的开销。2.不能确定和处理异常时,可以不处理,而把问题提交上去。3.把错误代码从常规代码中分离出来。4.把错误传播给调用堆栈。5.系统提供了对于一些无法预测的错误的捕获和处理。
异常处理机制的结构1.由Java异常处理机制的预设处理方法来处理,即一旦程序发生异常,程序就会被终止并显示一些错误信息给用户。2.使用Java语言提供的try-catch-finally语句自行处理异常。5.2异常类的继承关系
在Java中,将异常情况分为Exception(异常)和Error(错误)两大类。Exception类解决由程序本身及环境所产生的异常,而Error类则处理较少发生的内部系统错误。Exception类异常可以被捕获并进行相应处理,而对Error类异常,程序员通常无能为力,只能在其发生时由用户按照系统提示关闭程序。在Java的异常处理机制中,引进了很多用来描述和处理异常的类,称为异常类。每个异常类反映一类运行错误,类定义中包含了该类异常的信息和对异常进行处理的方法。常见异常的继承关系java.util包中的异常java.io
包中的异常java.awt
包中的异常
包中的异常常见异常的继承关系(续)系统定义的运行异常Error类系统定义的运行异常Exception类5.3异常处理方法异常处理方法有两种:一种方法是使用trycatchfinally结构对异常进行捕获和处理;另外一种方法是通过throws和throw抛出异常Trycatchfinally结构:
try{
可能出现异常的程序代码}catch(异常类名1异常对象名1){
异常类名1对应的异常处理代码}catch(异常类名2异常对象名2){
异常类名2对应的异常处理代码}…finally{必须执行的代码}(1)try语句
try语句用大括号指定了一段代码,该代码可能会抛出一个或多个异常,同时,该段代码也指定了它后面的catch语句所捕获的异常的范围。程序执行过程中,如果该块内的代码没有出现任何异常,将正常执行,后面的各catch块不起任何作用。但如果该块内的代码出现了异常,系统将终止try块代码的执行,自动跳转到所发生的异常类对应的catch块中,执行该块中的代码。(2)catch语句
java运行时,系统从上到下分别对每个catch语句处理的异常类型进行检测,直到找到与类型相匹配的catch语句为止。类型匹配是指catch所处理的异常类型与生成的异常对象的类型完全一致或者是它的父类。(3)finally语句
try所限定的代码中,当抛出一个异常时,其后的代码不会被执行。通过finally语句可以指定一块代码。无论try所指定的程序块中抛出或不抛出异常,也无论catch语句的异常类型是否与所抛出的异常的类型一致,finally所指定的代码都有被执行,它提供了统一的出口。当catch前面的try块发生了一个异常,try-catch语句就会自动在try块后面的各个catch块中,找出与该异常类相匹配的参数。当参数符合以下3个条件之一时,就认为这个参数与产生的异常相匹配:(1)参数与产生的异常属于一个类;(2)参数是产生的异常的超类;(3)参数是一个接口时,产生的异常实现了这个接口。以下情况,finally子句将会被执行:(1)try块中的语句没有产生异常;(2)try块中的语句产生了异常,而且此异常在方法内被捕获;(3)try中产生了异常,而此异常在方法内没有被捕获。抛出异常通常情况下,异常是由系统自动捕获的,但程序员也可以自己通过throw语句抛出异常。其语句格式为:
thrownew异常类名(信息)其中异常类名为系统异常类名或用户自定义的异常类名,“信息”是可选信息。如果提供了该信息,toString()方法的返回值中将增加该信息内容。声明异常在有些情况下,一个方法并不需要处理它所生成的异常,而是向上传递,由调用它的方法来处理这些异常,这时就要用到throws子句。为了明确指出一个方法不捕获某类异常,而让调用该方法的其他方法捕获该类异常,可以在声明方法的时候,使用throws可选项,抛出该类异常。格式为:[修饰符]返回值类型方法名[(参数表)]throws异常类型名{
声明部分语句部分}(1)异常类型名是系统异常或用户自定义的异常类型名;(2)与throw语句不同,throws选项仅需列出异常的类型名,而不能列出后面的括号及其追加的信息。自定义异常创建用户自定义异常的语法格式是:
class自定义异常extends父类异常名
{……}classMyExceptionextendsException{
MyException(String
msg){super();}
MyException(){}}5.4正确地使用异常
(1)在可以使用简单的测试就能完成的检查中,不要使用异常来代替它。(2)不要过细地使用异常。最好不要到处使用异常,更不要在循环体内使用异常处理。(3)不要捕获了一个异常而又不对它做任何处理。(4)将异常保留给方法的调用者并非不好的做法。所以,对于有些异常,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二四年度版权分期付款授权合同
- 二零二四年数据中心建设水泥供应合同
- 二零二四年度健身器材销售代理合同
- 二零二四年度城市道路建设设计与施工合同2篇
- 地铁站务员带教合同(2篇)
- 售后回购协议书(2篇)
- 二零二四年度电子商务数据共享与交换合同3篇
- 借款合同争议上诉状写作
- 长期农产品加工购销合同
- 酒水采购协议样本
- 高毒力肺炎克雷伯菌感染
- 消防应急预案流程图
- 高中化学人教版(2019)必修第一册教案312铁的氢氧化物铁盐亚铁盐
- A画法几何及水利工程制图期末考试
- 劳务工人讨薪事件处理指导意见
- 形式发票模板
- 内科学教学课件:脑梗死
- 社会主义改革开放理论课件
- 食材配送投标服务方案
- 五年级上册信息技术课件-11.讲文明树新风|大连理工版 (共11张PPT)
- 土地评估现场勘查表
评论
0/150
提交评论