第8章异常与处理.pptVIP

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

第8章 异常与处理 本章要点: 异常的定义及分类 try与catch块 异常类的设计 8.1 处理错误 假设当Java程序运行时发生错误,有如下3种。 设备错误 硬件设备有时也并不是完全按照我们的意愿做事。比如:正在接连一个网站时,网络却突然中断了;打印文件时打印到一半时,纸用完了等。这种与硬件有关的不可预料的错误,称为设备错误。 物理限制 比如想存储文件时,硬盘却已经满了;发送一个邮件时,文件过大,超过邮箱的限制那就不能发送了。这种类似由于本身容量的问题而引发的错误,称为物理限制。 代码错误 这种错误是很明显的,由于我们本身代码的原因使程序存在某种bug,以前系统会返回错误代码,用于代表不同的错误。但有时也很难区分错误的实质。在Java中通过方法抛出一个封装了错误信息的对象,异常处理机制会开始搜索一个能处理这种特定错误情况的异常处理器。以便能提示用户正确的避免由于程序的错误而将损失减少到最低处。 8.1.1 异常的分类 8.1.2 异常的声明 如果在Java程序设计中,调用一个方法时,出现Java不能处理的情况,那就应该抛出一个异常。它不仅告诉Java编译器应该返回什么类型的值,而且告诉编译器可能产生什么样子的错误。 在方法中声明一个异常是在方法的头部表示的。利用关键字throws,表示该方法在运行中可能会抛出的异常。 例如:我们看一下java.sql包中的DriverManager类,在这个类中有一个方法是根据用户名、密码等建立一个到数据库的连接。 public static Connection getConnection(String url, String user, String password) throws SQLException 可以看到该方法抛出了一个SQLException异常。 如果方法抛出多个异常,也必须要在方法的头部将多个异常全部列出来,并用逗号分隔。 8.1.3 异常的抛出 当调用一个抛出异常的方法时,有两种方式可以处理它,一种方式是继续向外抛出,另一种方式就是解决。 1. 继续抛出 所谓继续抛出也就是我们并不对异常做任何处理,只是把这个异常继续向外抛出,那究竟由谁来处理这个异常呢? 所有抛出的异常最终必须要有一个处理这个异常的方法,什么时候在什么位置处理这个异常是根据程序设计的思想来进行的。 2. 设计自己的异常类 有时候,标准异常类并不能充分描述我们自己的问题,在这种情况下,就需要创建自己的异常类了。 提示:在目前大多数的程序设计中,都会用到自己设计的异常类。所以异常类的设计请读者一定要注意。 设计一个自己的异常类其实是一件很轻松的事情,只要从Exception或IOException中派生一个子类就可以了。一般情况下,这个类要符合下列要求: (1)有一个默认构造器; (2)包含一个详细信息字符串参数的构造器。 8.2 异常的捕获 可以说抛出一个异常是相当简单的,抛出这个异常后就不需要再理会它了,但在实际程序设计中,我们必须要有代码捕获这个异常,捕获一个异常必须要有合理的计划与设计,以实现程序的可控制性及合理性。 如果想处理一个异常,首先应当捕获这个异常。捕获一个异常是用关键字try来实现的,例如: try { … … Connection conn = DriverManager.getConnection(strURL, strUser, strPassword); … … } 有可能抛出异常的代码应该放到try块中,如果我们捕获了一个异常,也就必须要处理它,如果不处理它就没有必要捕获了。所以关键字try不会是单独出现的。如果有try块那必须要有catch块。 8.2.1 捕获多个异常 如果有多个异常需要处理,那就需要多个catch块,例如: catch(SQLException e) { … … } catch(IOException ex) { … … } 已经了解了如何捕获及处理一个异常了,现在关键是在catch块中应该如何处理? 在通常设计中,我们需要知道异常相关的信息或输出定制的错误信息,例如: catch(SQLException e) { System.out.println(the error is occured);//定制的异常信息 e.printStackTrace();//打印错误对象的相关描述,由系统自动完成 } 换句话说,在catch块中,想如何处理,就如何处理。有时会根据程序的需要将错误跳转到一个特殊的页面等。总而言之,在catch块中就

文档评论(0)

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

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

1亿VIP精品文档

相关文档