代码大全学习笔记——第八章2

第八章

8.3 错误处理技术

错误处理技术的一些方法:

  1. 返回中立值
  2. 换用下一个正确的数据
  3. 返回与前次相同的数据
  4. 换用最接近的合法值
  5. 把警告信息记录到日志文件中
  6. 返回一个错误码
  7. 调用错误处理子程序或对象
  8. 当错误发生时显示出错信息
  9. 用最妥当的方式在局部处理错误
    10.关闭程序
    总结来说,其实就是根据实际情况来选择错误处理的方式,以上每一种方式都是针对特定情况的,所以根据自己的情况,来选择处理方式就可以了。!!!

健壮性与正确性

其实在许多例子中,都是健壮性与正确性两个方面的博弈,当现实程序更需要正确性的时候,那么就只能采用终止程序等一些方式;当现实程序更需要健壮性的时候,就需要程序出现错误时,优先考虑的是程序的稳定运行

高层次设计对错误处理方式的影响

在整个程序中要采用一致的方式处理非法的参数,对错误进行处理的方式会直接关系到软件能否满足在正确性、健壮性和其他非功能性指标方面的要求。

8.4 异常

c语言中没有这个东西

8.5 隔离程序,使之包容由错误造成的损害

在这里插入图片描述

隔栏与断言的关系

隔栏外部的处理应该使用错误处理技术,因为隔栏外部的数据可能是错误的;隔栏内部的处理应该是用断言,因为隔栏内部的数据应该都是正确的,那么就是程序的问题。

8.6 辅助调试的代码

不要自动地把产品版的限制强加到开发版之上

应该在开发期间牺牲一些速度和对资源的使用,来换取一些可以让开发更顺畅的内置工具;意思就是一定要有迭代的思想,不可能一开始就把所有的细节都做好,同时如果你太过于追求细节,那么你就可能不能在全局上把握整个代码,而导致项目进度受到影响。

尽早引入辅助调试的代码

个人经验感觉,等你程序写完了,再去写调试代码,首先你会觉得很麻烦,其次,你可能还需要重新阅读整个代码

采用进攻式编程

  1. 确保断言语句使程序终止运行。:让问题引起的麻烦越大越好,这样它才能被修复;
  2. 完全填充分配到的所有内存,这样可以让你检测到内存分配错误。
  3. 完全填充已分配到的所有文件或流,这样可以让你排查出文件格式错误。
  4. 确保每一个case语句中的default分支或else分支都能产生严重错误(比如说让程序终止运行),或者至少让这些错误不会被忽视。
  5. 在删除一个对象之前把它填满垃圾数据。
  6. 让程序把它的错误日志文件用电子邮件发给你,这样你就能了解到再已发布的软件中还发生了那些错误——如果这对于你所开发的软件适用的话。

计划移除调试辅助的代码

  1. 适用类似ant和make这样的版本控制工具和make工具
  2. 使用内置的预处理器
    在这里插入图片描述
  3. 编写你自己的预处理器:C和C++都有
  4. 使用调试存根:大概的意思呢,就是在最初写程序的时候,需要进行前条件检查,那么可以把前条件检查设置为函数,等到商品化之后,由于输入参数的正确性,不需要前条件检查了,那么就可以直接将函数置空;

猜你喜欢

转载自blog.csdn.net/u012850592/article/details/89517795