保护程序免遭非法输入数据的破坏
检查所有来源于外部的数据的值
检查子程序所有输入参数的值
决定如何处理错误的输入数据
断言
用错误处理代码来处理预期会发生的状况,用断言来处理绝对不应该发生的状况
避免把需要执行的代码放到断言中
用断言来注解并验证前条件和后条件
对于高健壮性的代码,应该先使用断言再处理错误
异常
用异常通知程序的其他部分,发生了不可忽略的错误
只在真正例外的情况下才抛出异常
不能用异常来推卸责任
避免在构造函数和析构函数中抛出异常,除非你在同一个地方把他们捕获
在适当的抽象层析抛出异常
隔离程序,使之包容由错误造成的伤害
隔栏与断言的关系
隔栏的使用使得断言和错误处理有了清晰的区分。隔栏外部的程序应使用错误处理技术,在那里对数据的任何嘉定都是不安全的,而隔栏内部的程序就应该应该使用断言技术,因为传进来的数据应该已经在通过隔栏时被清理过了,如果隔栏内部的某个子程序检测到了错误的数据,那么这应该是程序里的错误而不是数据里的错误。
隔栏的使用还展示了”在架构层次上规定应该如何处理错误“的价值。规定隔栏内外的代码是一个架构层次上的决策。
尽早引入辅助调试的代码
采用进攻式编程
应该以一种这样子的方式来处理异常:在开发阶段让它显现出来,而在产品代码运行时让它能够自我恢复。
计划移除调试辅助性的代码
确定在产品代码中保留多少防御式代码
对防御式编程采取防御的姿态
把握合适的度
image.png image.png
网友评论