assert() 是啥?怎样用它?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了assert() 是啥?怎样用它?相关的知识,希望对你有一定的参考价值。

这是个定义在 <assert.h> 中的宏, 用来测试断言。

使用断言可以创建更稳定,品质更好且不易于出错的代码。当需要在一个值为FALSE时中断当前操作的话,可以使用断言。单元测试必须使用断言(Junit/JunitX)。

断言可以有两种形式

1、assert Expression1

2、assert Expression1:Expression2

其中Expression1应该总是一个布尔值,Expression2是断言失败时输出的失败消息的字符串。如果Expression1为假,则抛出一个 AssertionError,这是一个错误,而不是一个异常,也就是说是一个不可控制异常(unchecked Exception),AssertionError由于是错误,所以可以不捕获,但不推荐这样做,因为那样会使你的系统进入不稳定状态。

扩展资料: 

使用断言的几个原则:

1、使用断言捕捉不应该发生的非法情况。不要混淆非法情况与错误情况之间的区别,后者是必然存在的并且是一定要作出处理的。

2、使用断言对函数的参数进行确认。

3、在编写函数时,要进行反复的考查,并且自问:"我打算做哪些假定?"一旦确定了的假定,就要使用断言对假定进行检查。

4、一般教科书都鼓励程序员们进行防错性的程序设计,但要记住这种编程风格会隐瞒错误。当进行防错性编程时,如果"不可能发生"的事情的确发生了,则要使用断言进行报警。

参考资料来源:百度百科-assert

参考技术A 原本以为assert是C++中的东东,没想到C里就有。:-)

assert() 是个定义在 <assert.h> 中的宏, 用来测试断言。一个断言本质上是写下程序员的假设, 如果假设被违反, 那表明有个严重的程序错误。例如, 一个假设只接受非空指针的函数, 可以写:

assert(p != NULL);

一个失败的断言会中断程序。断言不应该用来捕捉意料中的错误, 例如 malloc() 或 fopen() 的失败。

不是用来检查错误的

当程序员刚开始使用断言时,有时会错误地利用断言去检查真正地错误,而不去检查非法的情况。看看在下面的函数strdup中的两个断言:
char* strdup(char* str)

char* strNew;
assert(str != NULL);
strNew = (char*)malloc(strlen(str)+1);
assert(strNew != NULL);
strcpy(strNew, str);
return(strNew);

第一个断言的用法是正确的,因为它被用来检查在该程序正常工作时绝不应该发生的非法情况。第二个断言的用法相当不同,它所测试的是错误情况,是在其最终产品中肯定会出现并且必须对其进行处理的错误情况。
参考技术B 这是个定义在 <assert.h> 中的宏, 用来测试断言。一个断言本质上是写下程序员的假设, 如果假设被违反, 那表明有个严重的程序错误。例如, 一个假设只接受非空指针的函数, 可以写:
assert(p != NULL);

一个失败的断言会中断程序。断言不应该用来捕捉意料中的错误, 例如 malloc() 或 fopen() 的失败。本回答被提问者采纳
参考技术C 断言,具体用法看下面
http://baike.baidu.com/view/653925.htm

assert的作用是啥

参考技术A

一、assert的基本意思是“坚持”“断言”,即做主观的、自信的、有说服力的阐述。

二、这种“主张”或“断言”尽管有时并无凭据,但是要让别人相信自己的话是有依据的,或要别人对凭据感兴趣。

1、读音:英 [əˈsɜːt]   美 [əˈsɜːrt] 

2、释义:明确肯定,断言。

3、语法:assert表示“主张,断言”,指宣称某事如此,并不说它是事实,着重主观自信心。

4、例句:He's speaking up and asserting himself confidently. 他明确表态,信心十足地阐述自己的观点。

扩展资料


近义词:declare

1、读音:英 [dɪˈkleə(r)]   美 [dɪˈkler] 

2、释义:宣告,表明,宣称。

3、语法:declare的基本意思是明确地、清楚地、正式地“宣布,宣告”,多用于官方场合。引申可指“宣称”“断言”“申报”等。

4、例句:Your income must be declared on this form必须在这张表格上申报你的收入。

以上是关于assert() 是啥?怎样用它?的主要内容,如果未能解决你的问题,请参考以下文章

assert的作用是啥

Assert.assertEquals是啥含义

Assert.assertEquals是啥含义

C++ assert(0); 语句直接忽略了,没有执行,可能是啥原因啊?各位大虾,帮帮忙

python中的assert是啥意思呢

ASSERT(SUCCEEDED(hr))是啥意思