assert vs Defensive programming

     Defensive programming 是程序员一般使用的编程方式,也就是对所有有可能(也许是在设计逻辑上没有可能出现的值)的出现的错误进行处理。但这种编程方式会在调试阶段隐瞒错误。要记住,我们编写程序的目的是编写无错的代码,是要让所有的错误不应该再发生,而不是每次去安全处理发生的错误,所以Defensive programming和编写无错程序的理念有点矛盾。但 Defensive programming 也是有价值,对所有这些错误做以防万一的处理。

 

      所以我们程序员在编写代码时,既要使用Defensive programming 来安全处理错误,也要让错误尽早暴露出来,可以一方面用Defensive programming 进行编码,一方面在错误发生时用assert报警。这样就可以在调试版本中对错误进行报警,而在发布版对错误安全恢复。

      要对程序中不可能发生的情况进行assert检查,可以尽早暴露错误。

      assert应该用来检测程序在任何环境下正常工作都不可能发生的错误,只汇报错误,不预防不更正错误,对于那些在正常使用有可能出现的异常(如malloc失败),则要用防错程序处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值