您的位置:首页 > 编程语言

《Code Complete》ch.8 防御式编程

2014-06-18 15:49 99 查看

WHAT?

主要思想:子程序不应因传入参数错误而被破坏

WHY?

保护程序免遭非法输入的破坏

HOW?

断言

assert denominator != 0 : "denominator should not be 0"; // 启动VM时需要 -ea 参数用以启动assert功能


只用于开发、维护阶段

用错误处理代码来处理预期会发生的状况,用断言来处理绝不会发生的状况

避免把需要执行的代码放入断言中

用断言来注解并验证前条件和后条件

错误处理技术

返回中立值(当对返回结果准确性要求较低的时候)

换用下一次正确的数据

返回与前次相同的数据

换用最接近的合法值

记录日志

返回错误码

设置一个状态参数的值

返回一个状态值

使用语言内建的异常机制抛出一个异常

关闭程序

健壮性与正确性

处理错误最恰当的方式要根据软件类别来确定

健壮性(robustness):消费类应用软件

正确性(correctness):关乎人身安全的软件

异常机制

用异常通知程序的其它部分,发生了不可忽略的错误

只在真正例外的情况下才抛出异常

不能用异常来推卸责任,能在局部处理的错误就不要抛出

避免在构造函数和析构函数中抛出异常

在恰当的抽象层次抛出异常,确保异常的抽象层次和接口的抽象层次是一致的

考虑集中的异常报告机制

异常需要包含关于异常发生的所有背景信息

隔离程序

公有方法假设数据不安全

私有方法假设数据安全
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: