第六讲-异常处理.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第六讲-异常处理

第六讲 异常处理 异常的概念 什么是异常? 异常是在程序执行过程中发生的打断程序正常执行指令流的事件 E.g., 除数为0 期望打开一个文件,但传入了一个目录名 试图”hello”字符串转换成整数 数组访问越界 访问空引用的内容 … C及其它早期语言的错误处理模式 返回某个特殊值或设置某个错误标志 由接收者对返回值或标志进行检查判断是否发生错误 但是,程序员经常不会去检查错误。。。 Java的异常处理 用强制规定的形式消除错误处理过程中随心所欲的因素 异常的抛出和捕获 抛出异常 当在一个方法内部发生错误时,生成一个异常对象,交给运行时系统 异常对象包含错误信息,如错误类型、错误发生时程序的状态等 创建异常对象并将其交给运行时系统的过程称为抛出异常 捕获异常 运行时系统尝试沿方法调用栈找到某段代码处理异常 一旦找到能处理异常的代码,则终止查找过程 如果遍历整个调用栈都找不到能够处理该异常对象的代码,则程序终止 三种异常类型 检测异常(Checked exception) 应用程序应该期望到并从能从中恢复的异常 E.g., java.io.FileNotFoundException 必须在程序中处理或在方法定义时声明 除了Error, RuntimeException,其余的异常都是checked exception 错误(Error) 与应用程序执行逻辑无关的错误,程序难以预期和从中恢复。 E.g., 读文件过程中的硬件错误 不需要在程序中处理 Error及其之类 运行时异常(Runtime Exception) 应用程序有关的错误,但应用程序难以预期和恢复。通常意味着编程逻辑错误。 E.g., NullPointerException RuntimeException及其子类 Java语言中的部分异常类 异常代码的处理 对于可能抛出检测异常(checked exception)的代码,应该选择下面两种方法之一,否则程序无法编译: try-catch-finally 处理异常 异常声明 try-catch-finally 异常捕获 try块 异常处理 catch子句 可以有多个 finally清理(不是必须的) 无论try块是否抛出异常,都将得到执行 finally块通常用于进行资源的清理工作 try{ //code that might generate exceptions; }catch(Type1 id1){ //Handle exceptions of Type1 } catch(Type2 id2){ //Handle exceptions of Type2 } catch(Type3 id3){ //Handle exceptions of Type3 } … finally{ //无论是否抛出异常,finally段的代码都将得到执行 } 异常匹配顺序 从try块后面的第一个catch子句开始匹配,直到找到一个catch子句为止。 一旦找到,则不再匹配后续的catch子句 因此,应尽量将子类异常放在前面,而将父类异常放在后面,特别地,Exception可以放在最后一个catch子句,标识匹配所有由Exception继承来的子类 异常声明 当一个方法内部抛出异常(Error和RuntimeException除外)时,而不想亲自进行异常处理时,必须在方法声明中通过throws予以声明 由方法调用者负责处理异常 修饰符 返回类型 方法名(参数列表) throws 异常列表 抛出异常 任何代码都可以抛出异常 自己编写的代码 别人编写的第三方代码 JAVA运行时环境 通过throw语句抛出异常 所有抛出的异常都必须是Throwable的直接或间接子类 抛出异常语句 throw语句 if(t==null) throw new NullPointerException(“t=null”); if(i=array.length) throw new ArrayIndexOutofBoundsException(); 异常声明属于方法声明的一部分。子类重写父类的方法时,不能抛出比父类方法更多的异常。但可以抛出父类声明的异常的子类异常 Why? 为何要对子类抛出的异常类型进行限制 人们通常愿意针对基类或接口进行编程,而隐藏具体类的细节 利用多态进行运行时动态绑定 如果子类抛出了父类未声明的异常,则针对父类的代码将会失效 自定义异常类 从已有的异常类继承,选择意思相近的异常类 class SimpleException extends Exception{} class MyException e

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档