- 检查所有来源于外部的数据的值
- 比如数值允许的范围,字符串要不超长,字符串的类型,整数溢出等…
- 检查子程序所有参数的值
- 决定如何处理错误的输入数据
- 断言 -> 检查如下这些假定
- 输入参数或输出参数的取值处于预期的范围内
- 仅用于输入的变量的值没有被子程序所修改
- 指针非空
- 传入子程序的数组或其他容器至少能容纳x个数据元素
- …
- 如何用断言
- 用错误处理代码待处理预期会发生的状况,用断言来处理绝不应该发生的状况
- 断言用来检查永远不该发生的情况,用于检查代码中的bug
- 错误处理用来检查有害的输入数据
- 用错误处理代码待处理预期会发生的状况,用断言来处理绝不应该发生的状况
- 对于高健壮性的代码,应该先使用断言再处理错误
- 仅针对跨期特别长,特别复杂的项目 举例Microsoft Word..
- 一般咱项目用一种就可以了
- 错误处理
- 返回中立值
- 比如返回0,空字符串,空指针等
- 换用下一个正确的数据
- 记录警告信息到日志
- 返回一个错误码
- 提示出错信息
- 返回中立值
- 异常
- 避免使用空的catch语句
- 了解所用函数库可能抛出的异常
- 考虑创建一个集中的异常报告机制
- 把项目中对异常的使用标准化
- 考虑异常的替换方案
- 确保在产品代码中该保留多少防御式代码
- 保留检查重要错误的代码
- 去掉检查细微错误的代码
- 去掉可以导致程序硬性崩溃的代码
- 保留可以让程序稳妥崩溃的代码
- 记录错误日志
- 确认留在代码中的错误消息是友好的