Java-第08章-异常处理2.ppt

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

第8章 异常处理 目标 理解异常的概念 运用 try 块、catch 块和 finally 块处理异常 运用多重 catch 块处理异常 运用嵌套 try/catch 块处理异常 运用关键字 throw 和 throws 处理异常 运用JAVA编写和使用自定义异常 异常处理介绍 何谓异常呢? 生活中 计划:起床、洗漱、吃饭、上课、考试、答辩、毕业 意外:起床晚了、没有饭了、考试不及格、答辩没通过 需要特别处理 计算机运行时 断电、磁盘满、打印机没开、被零除等 栈的例子 一个实际例子(数据结构 栈): int stack::top( ) { if (empty( )) { // 怎么办? } ... ... } 遇到这类情况时,如何处理呢? 在没有语言层面支持的情况下 常见处理方式1(教科书中常见): int stack::top() { if (empty( ) ) exit(1); ... ... } 处理方式2(教科书中常见): int stack::top( ) { if ( empty( ) ) cout Stack empty; ... ... } 处理方式3(教科书中可见): int stack::top() { assert( ! empty( ) ); ... ... } ? 断言:用于帮助查找程序错误,在调试程序出错时assert产生错误报告并终止程序。通常在生成执行代码时关闭断言。 处理方式4(教科书中可见): int stack::top( ) { if (empty( )) return ECODE1; ... ... } 使用者: if((n=s.top()) == ECODE1) ... // 出错处理 else ... // 正常处理 如果: ? 每个函数都设出错返回值 ? 每个调用都检查 将严重干扰程序的正常控制流 ? 程序很容易变得无法控制 ? 程序变得难以阅读 处理方式不标准 小结 大量处理异常情况的代码与正常控制流代码混在一起,极大地影响程序开发,破坏可读性、可理解性和可维护性。 1980年代末一项研究显示,程序里处理错误的代码可能达到总代码量的2/3。 可见:常规的描述手段对于错误处理描述的支持不足。 考虑从语言层面上处理 所以,在新的语言中,如C++、Java、C#都在语言层面提供了对异常的处理机制。 什么是异常? 处理异常 2-2 try 和 catch 块 2-1 try 和 catch 块 2-2 finally 块 异常处理块的一般形式 try{ // 要监控错误的代码块 methodGeneratingException(); } catch (Exception e) { // Exception e 的异常处理程序 } finally{ // 在 try 结束前要执行的代码块 cleanup(); } Java中的异常处理 问题: 异常处理程序的对象参数作何用处? 作用: 用来向异常处理程序提供信息 多重 catch 块3-1 一段代码可能会生成多个异常 当引发异常时,会按顺序来查看每个 catch 语句,并执行第一个类型与异常类型匹配的语句(异常也是多态的) 执行其中的一条 catch 语句之后,其他的 catch 语句将被忽略 异常类的层次结构 Throwable 具有两个子类,它们是 Exception:处理用户程序应当捕获的异常情况 Error:Error 类的异常为内部错误,因此在正常情况下不期望用户的程序捕获它们 Java异常类 Java中的异常处理 原则:由近及远,找到即停,没有终止。 多重 catch 块3-2 使用多重 catch 语句时,异常子类一定要位于异常父类之前 多重 catch 块3-3 嵌套 try – catch 块 使用 throw 和 throws 使用 throw 和 throws 用户自定义异常 2-1 自定义异常概念 使用自定义异常的时候 JavaAPI提供的内置异常不一定总能捕获程序中发生的所有错误。有时会需要创建用户自定义异常 自定义异常需要继承Exception 及其子类 用户自定义异常 2-2 许多情况下,无论try是否抛出一个异常,也无论该异常是否在方法中被捕获,都要执行一个过程。(煤气灶) 比如:必须关闭的文件;使用了外部资源等 try { … } catch(…){

文档评论(0)

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

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

1亿VIP精品文档

相关文档