我有关于使用assert / assertion的问题。
我看到/使用不同语言的指令断言,但我并不是真的理解 背后的感觉。
例如,对于Java / C#中的单元测试,我可以使用它,然后在运行测试后得到红灯或绿灯(真/假)。
但是在像C这样的低级语言中它背后的意义是什么?教学背后发生了什么?这有点像异常处理吗?
if(obj != null" and "assert.notNull(obj)
不一样吗?
答案 0 :(得分:0)
通常在C环境中,assert()
被实现,以便程序终止,例如如果条件为假,则使用abort()
。
这个想法是断言检查必须始终为真的不变条件。如果没有,则会出现编程错误,并且程序最好尽快终止,而不是让它以不一致的状态运行。
这不是异常处理:程序无法从断言失败中恢复,并且通常断言不用于检测运行时错误,例如分配失败或I / O错误,而异常通常用于此类目的。但是,某些具有内置异常处理的环境会将声明失败实现为抛出异常。
在维基百科上阅读更多内容:http://en.wikipedia.org/wiki/Assertion_(computing)