有效处理Java异常三原则Java开发Java经验技巧.docxVIP

有效处理Java异常三原则Java开发Java经验技巧.docx

  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文档。上传文档
查看更多
冇效处理Java异常三原则-Java开发Java经验 技巧 有效处理Java异常三原则 木文作者:ImportNew?郑玮未经许町,禁止转载! Java中异常提供了一种识别及响应错误情况的一?致性机制,冇效地异常处理能 使程序更加健壮、易于调试。异常Z所以是一种强大的调试手段,在于其回答了 以下三个问题: ?什么出了错? ?在哪出的错? ?为什么出错? 在有效使用异常的情况卜,异常类型回答了 “什么”被抛出,异常堆栈跟踪回答 T “在哪“抛出,异常信息回答了 “为什么“会抛出,如果你的异常没有回答以 上全部问题,那么可能你没有很好地使用它们。有三个原则可以帮助你在调试过 程屮最大限度地使用好异常,这三个原则是: ?具体明确 ?提早抛出 ?延迟捕获 为了阐述有效异常处理的这三个原则,木文通过杜撰个人财务管理器类 JCheckbook进行讨论,JCheckbook用丁?记录及追踪诸如存取款,票据开具之类的 银行账户活动。 具体明确 Java定义了一个异常类的层次结构,其以Throwable开始,扩展岀Error和 Exception,而 Exception 又扩展出 RuntimeException.如图 1 所示. 图1. Java异常层次结构 这四个类是泛化的,并不提供多少出错信息,虽然实例化这几个类是语法上合法 的(^11: new Throwable ()),但是最好还是把它们当虚基类看,使用它们更加特化 的子类。Java已经提供了大量异常子类,如需更加具体,你也可以定义自己的 异常类。 例如:java, io package包中定义了 Exception类的子类IOExccption,更加特 化确的是 FileNotFoundException, EOFException 和 ObjectStreamException 这些IOException的了类。每一种都描述了一类特定的I/O错误:分别是文件 丢失,异常文件结尾和错误的序列化对象流.异常越具体,我们的程序就能更好地 冋答”什么出了错”这个问题。 捕 获异常时尽量明确也很重要。例如:JChcckbook可以通过重新询问用户文件 名来处理FileNotFoundException,对于EOFException,它可以根据异常抛出 前读取的信息继续运行。如果抛出的是ObjectStreamException,则程序应该提 示用户文件已损坏,应当使用备份文件或者其他文件。 Java让明确捕获异常变得容易,因为我们口J以对同一 try块定义多个catch块, 从而对每种异常分别进行恰当的处理。 File prefsFile = new File(prefsFilename); try { readPreferences(prefsF订e); } catch (FileNotFoundExccption c){ // alert the user that the specified file // does not exist } catch (EOFException e) { // alert the user that the end of the file // was reached } catch (ObjectStreamExcept ion e) { // alert the user that the file is corrupted } catch (lOException e){ // alert the user that some other I/O // error occurred } JCheckbook通过使用多个catch块来给用户捉供捕获到异常的明确信息。举例 来说:如果捕获了 FileNotFoundException,它可以捉示用户指定另一个文件, 某些情况下多个catch块带来的额外编码工作量可能是非必要的负担,但在这个 例子屮,额外的代码的确帮助程序提供了对用户更友好的响应。 除前三个catch块处理的异常Z外,最后一个catch块在lOException抛出时给 用户提供了更泛化的错误信息?这样一来,程序就可以尽可能提供具体的信息, 但也有能力处理未预料到的其他异常。 有时开发人员会捕获范化异常,并显示异常类名称或者打印堆栈信息以求”具 体”。千万别这么干!用户看到java. io. EOFExccption或者堆栈信息只会头疼 而不是获得帮助。应当捕获具体的异常并且用”人话”给用户提示确切的信息。 不过,界常堆栈倒是可以在你的日志文件里打卬。记住,界常和堆栈信息是用來 帮助开发人员而不是用户的。 最后,应该注意到JCheckbook并没冇在readPreferences ()中捕获异常,而是 将捕获和处理异常留到用户界面

文档评论(0)

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

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

1亿VIP精品文档

相关文档