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