不同语言的断言

时间:2014-03-23 01:50:41

标签: assertion

我有关于使用assert / assertion的问题。

我看到/使用不同语言的指令断言,但我并不是真的理解 背后的感觉。

例如,对于Java / C#中的单元测试,我可以使用它,然后在运行测试后得到红灯或绿灯(真/假)。

但是在像C这样的低级语言中它背后的意义是什么?教学背后发生了什么?这有点像异常处理吗?

if(obj != null" and "assert.notNull(obj)不一样吗?

1 个答案:

答案 0 :(得分:0)

通常在C环境中,assert()被实现,以便程序终止,例如如果条件为假,则使用abort()

这个想法是断言检查必须始终为真的不变条件。如果没有,则会出现编程错误,并且程序最好尽快终止,而不是让它以不一致的状态运行。

这不是异常处理:程序无法从断言失败中恢复,并且通常断言不用于检测运行时错误,例如分配失败或I / O错误,而异常通常用于此类目的。但是,某些具有内置异常处理的环境会将声明失败实现为抛出异常。

在维基百科上阅读更多内容:http://en.wikipedia.org/wiki/Assertion_(computing)