断言assert , 契约式编程

  今天在学习设计模式时看到"assert"关键字,发现跟exception类似。功能上同样是捕捉程序错误抛出异常,那么什么时候改用断言assert,什么时候该用异常exception呢,在做了相关搜索后发现知乎@vczh说的很清楚很直白一下就懂了。他的原话是

assert用在那些你知道绝对不会发生的事情上,但是因为人总是会犯错误,保不准你写出来的东西跟你想的不一样。所以assert用来捕捉的是程序员自己的错误。
同理,exception捕捉的是用户或者环境的错误。

assert用于捕捉程序员自己的错误,exception用于捕捉用户的错误。在实际多人合作开发中,经常会有写公用方法的情况,方法不能保证其他程序员传入的参数是正确的,每当发生错误时,都要一步一步debug过来(当然对错误清楚的例外),这里如果是用断言校验的话就能很直观的将错误信息反馈给程序员,这还是很方便的。

assert相当于“契约编程设计”的先验条件,虽然平时在开发中经常只是口头说一声,或者只是在代码上注释一下(我们公司小吧,口头先验条件tongue.gif

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值