【软件构造】断言、异常、隔离

断言

将语义错误转变为语法错误。

例如cpp的assert,便于开发者完成错误的定位。

  • 断言主要用于开发和维护阶段,生产时不编译进产品。
  • 断言用来检查永远不应该发生的错误。
  • 错误处理用来检查程序的非正常情况。(能在开发阶段预料到)
  • 避免把执行代码(有意义的代码)放入断言中。

前条件和后条件

  • 前条件:调用方提供给被调用函数的参数。(保护传入方法的参数)
  • 后条件:与前条件相反。承诺给调用方。

通常要么断言,要么错误处理,有时也同时使用。

错误处理技术

处理我们预料得到的错误。

集中处理:比较简单。

正确性、健壮性。消费类软件更注重健壮性。

异常

把代码中的错误或异常事件传递给调用方的一种方法。

  • 不可忽略的错误
  • 真正例外的情况
  • 适当的一致的抽象
  • 避免ignore的catch
  • 集中的异常报告(logger)

隔离

程序的外部和内部被明显隔离。

  • 对外部传递的数据采用错误处理。因为外部数据不安全。
  • 内部数据采用断言。

进攻性编程

  • 确保断言终止程序
  • 确保问题被找出
  • 可以定制自己的预处理器
  • 存根:代替有效程序的简单程序(可快速移除)

防御性编程

开发阶段尽可能暴露错误
发布阶段尽可能减少错误

  • 保留检查重要错误的代码
  • 去掉检查细微错误的代码
  • 适当的地方使用防御性编程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值