Java程序设计 (第2版)下ppt158.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java程序设计 (第2版)下ppt158

Java程序设计(第2版) Java程序设计 (第2版) Java程序设计(第2版) 第1章 Java程序初步 第2章 数据与数据运算 第3章 Java语句 第4章 类和对象 第5章 字符串和包装类 第6章 继承和嵌入类 第7章 接口和包 第8章 数组 第9章 例外处理 第10章 线程与同步 第11章 文件与输入输出 第12章 泛型和集合框架 第13章 GUI设计 第14章 Java applet Java程序设计(第2版) 第9章 例外处理 一、例外的概念 例外是方法代码运行时出现的非正常状态,这种非正常状态使程序无法或不能再正常地继续往下运行。 Java采用面向对象的方法来处理例外:当一个方法在运行时发生例外时,将产生相应类型的一个例外对象、中止代码继续往下运行并寻找相应的例外处理代码。 二、例外分类 例外对象是指java.lang.Throwable类或其子类的实例。 例外可分为受检查的例外和不受检查的例外两大类。 对不受检查的例外,程序员通常可以不加处理;而对受检查的例外,程序员必须捕捉或声明由调用方法处理。 三、引发例外 1. 例外引发的两种情形: Java运行系统在发现异常情况时会自动引发例外。 用throw语句显式引发:throw 例外对象; 2. 例外引发时,代码将不再继续往下执行,而由系统 寻找合适的例外处理代码执行。 3. 当不能寻找到合适的例外处理代码时,将调用缺省 例外处理程序,输出例外的类型及发生例外的位置。 四、声明抛出例外 1. 如果一个方法引发的是受检查的例外且自己没有捕捉,那么它必须用throws子句声明抛出: 返回类型 方法名 ( 参数列表 ) throws 例外类型列表 { …… } 2. 如果一个方法引发例外(受检查或不受检查)而又没有捕捉处理,那么例外将沿着方法调用的反方向传播,寻找并转入合适的例外处理代码执行。 3. 覆盖方法不能比被覆盖方法抛出更多类型的受检查例外。 五、捕捉例外(一) Java使用try-catch-finally语句来捕捉和处理可能发生的例外: try子句包含一段可能要发生例外的代码。一旦发生例外,将由后面的catch子句捕捉处理。 catch子句可以有一个或多个,而且至少有一个catch子句或finally子句。 五、捕捉例外(二)--try和catch子句 每个catch子句有一个参数,参数类型指明该子句能够捕捉的例外类型。 当try子句引发例外并被catch子句被捕捉时,执行该catch子句,然后执行try语句后面的代码。 如果try子句没有引发例外,则直接执行try语句后面的代码。 五、捕捉例外(三)--多个catch子句 每个catch子句只能捕捉一种类型的例外。运行系统将从上到下依次检查每个catch子句能够处理的例外类型,直到找到某个catch子句,其能够处理的例外类型与抛出的例外对象相容。 两个catch子句不能捕捉同一类型的例外。若两个catch子句能够捕捉的类型是子类与超类的关系,那么应该子类在前,超类在后,即从特殊到一般。 五、捕捉例外(四)--未捕捉到的例外 如果try子句引发例外,而又没有catch子句能够捕捉处理,那么例外将向外抛出。 如果方法代码可能抛出的是受检查的例外,而方法体内又没有任何catch子句能够捕捉这种类型的例外,那么定义方法时必须用throws子句声明抛出这种类型的例外。 五、捕捉例外(五)--再引发例外 当catch子句捕捉到一个例外并进行处理时,也可能会引发一个新的例外。此时,原先的例外被抛弃,新的例外从try语句抛出并向外传播。 新的例外应该被看作是由try语句引发而又没有捕捉的例外。 五、捕捉例外(六)--finally子句 无论何种情况离开try 子句,都会执行finally 子句: 如果try子句没有产生例外,跳过所有catch 子句,执行finally子句,然后执行finally 后的第一条语句。 如果发生一个例外,跳过try 代码块的其余部分,并由一个合适的catch子句处理(如果存在),然后执行finally子句,最后继续执行finally后的第一条语句。 五、捕捉例外(六)--finally子句(续) 如果发生一个例外,又找不到一个合适的catch子句处理, 就直接执行finally子句,然后将例外沿着调用链的反方向向外层传递。 如果在执行catch 子句时抛出一个例外,那么先执行finally子句,然后将该例外沿着调用链的反方向向外层传递。 如果由于跳转语句(return、break、continue)要离开try语句,在跳转前首先执行finally子句。 六、定义自己的例外类型 定义例外类型的原因主要

文档评论(0)

skvdnd51 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档