第18章 让系变得更健康——.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文档。上传文档
查看更多
第18章 让系变得更健康——

第18章 让系统变得更健康——异常处理 高质量的代码历来是软件开发工程师追求的目标。在实际的软件开发过程中,处理正常功能的代码只占总代码的四分之一,剩下的代码都是用来处理程序中的异常情况,尽可能在问题出现之前将所有的程序处理错误逻辑都捕捉到,解决代码中所有隐藏的问题。 C++中引用了异常的机制来进行程序的检测,避免了传统的程序异常处理方法造成的大量干扰正常逻辑的代码。在本章中,将着重介绍如何利用C++语言中提供的异常处理机制来进行代码的异常处理,并分析使用异常处理有的优点和缺点。在程序中进行异常处理是每个开发人员都应该养成的良好习惯和编程风格,对程序进行异常处理可以提高程序的稳定性和系统的健壮性,避免由于程序运行环境的变化而导致的一些异常情况的出现。 18.1 异常处理的含义 异常处理是提高代码运行稳定性和程序运行出现错误后进行恢复的一个有效的方法和途径,但是在以往的编程过程中人们往往只注重程序中正常的逻辑功能而忽略了对程序的错误情况的处理,这就导致了以往开发的程序不够稳定,运行时总会出现这样或者那样的错误。随着软件开发复杂度的增加,人们越来越注重对程序进行异常处理,越早发现问题就能够及时解决问题,减少了开发的成本缩短了软件的发布日期,提高了软件的开发效率。另外,在程序中进行必要的异常处理,跟据出现异常时程序返回的信息可以对异常进行及时的定位,快速找到问题的根源所在,帮助开发人员及时解决问题。 18.2 抛出异常 C++中提供的异常处理的功能给我们的编程带来了很大的方便,让我们从处理错误的复杂逻辑中解脱出来,也让我们的代码更加清晰。下面来详细介绍一下如何利用C++语言中的异常处理机制来抛出一个异常。 在当前的程序中,如果根据当前已有的语境不能获得足够的信息来决定对程序采用什么样的措施程序开发人员可以自己创建一个包含错误信息的对象并把它抛出当前的语境。 18.2 抛出异常 18.3 捕获异常 C++语言的异常处理机制给开发人员带来了很大的方便,可以使开发人员在程序中创建一个单独的模块来专门处理程序段中出现的错误。正常功能的代码和异常处理代码的相互独立不但给程序代码逻辑变得更加清晰而且提高了开发人员的代码调试效率。 18.4 使用异常 开发人员都知道,有的编程语言是不支持处理机制的,例如:C语言就不支持异常机制。下面将具体讨论一下在实际的编程中何时来使用异常。 18.4.1 何时避免异常 在程序中使用异常并不能解决所有的问题,如果过多的使用异常机制来处理异常结果将会适得其反。在下面的内容中将介绍在哪些情况下不应该使用异常。 1.处理简单错误的情况下 2.程序的流程控制中不使用异常 3.不要强迫自己在程序中使用异常 4.在异步的事件中不适用异常 18.4.2 异常的典型应用 上节中讲述了什么情况下不必要使用异常,在这一小节中将着重介绍一下在程序编写过程中的异常的典型应用。 程序编写时通常下列情况可以使用异常: 在程序中需要修改程序产生的错误并非需要重新调试产生异常的函数或代码段时可以使用异常。 在产生异常函数或代码段的外面添加额外的代码从而使得程序能够继续执行可以使用异常。 在当前的程序段中使程序做更多的工作,从而使得程序可以将相同类型或者不同类型的异常重新抛出到更高层的代码处理段中。 18.4.3 非错误处理 在实际的编程过程中,有些情况需要从程序的一种状态跳到另外一种状态。功能和编程语言中的goto语句极为相似,但是在编程中,goto语句只是在的状态的跳转只是在同一个函数内进行跳转,如果需要跳转的深度太深或在一个函数之外的话就不行了。例如,在程序的深处跳出各层循环语句,可以使用条件控制的方法来进行判断是否要跳出循环,但是如果这样做的话,实现起来会比较麻烦,需要判断的条件太多,增加可程序开发人员的工作量,而且还有一个重要的原因就是,如果程序足够深惠影响程序的性能,这种情况就可以利用C++语言中的异常处理机制来完成,从而克服程序里的许多缺点。 18.4.3 非错误处理 18.5 标准异常处理类 C++语言中给用户提供了一个标准异常处理的类库,用来捕获并处理C++程序语言中产生的异常信息。 在C++语言中,异常处理类的基类是exception,其它所有的类都是由该类派生而来,在C++语言中主要的错误类型有两大类,分别是逻辑错误和运行时错误。 逻辑错误是程序内部逻辑产生的错误,逻辑错误通常可以人为的进行避免,且在程序开始执行时可以被检测到。如果向程序中传递了一个无效的实参,则抛出invalid_argument错误,如果函数接收到一个不在预期范围的实参、数组的越界、string对象下标值越界等等则抛出out_of_range异常,如果操作的长度超过了最大的长度则抛出length_error异常。 18.5 标

文档评论(0)

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

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

版权声明书
用户编号:6153235235000003

1亿VIP精品文档

相关文档