assert(斷言)的使用

2021-06-22 23:16:22 字數 1202 閱讀 2235

程式一般分為debug 版本和release 版本,debug 版本用於內部除錯,release 版本發行給使用者使用。(這個概念可能不大好理解,想想vc下,除錯時有個選項,乙個是debug,乙個是release)

assert(表示式);     的意思是:當表示式為真時,程式繼續執行,如果表達市為假,那程式就會停止執行,並提示錯誤資訊。

注意:assert是乙個巨集,只在debug版本中起作用,在release版本中,該語句是不起任何作用的。

先簡單的看乙個例子吧!

以下為乙個使用了斷言的c源程式:

#include

#include

void test(int *p)

int main(void)

編譯及執行結果:

qdieyou@qdieyou /cygdrive/e/gcc

$ gcc -o assert assert.c

qdieyou@qdieyou /cygdrive/e/gcc

$ ./assert

assertion "p != null" failed: file "assert.c", line 6

19331 [sig] assert 3288 e:/gcc/assert.exe: *** fatal error - called with threa

dlist_ix -1

hangup

程式說明:由於我們在main函式中傳了null指標值給test函式,在test函式執行到assert(p != null);發現表示式不為真,就終止了程式的執行,並提示錯誤的行數資訊。

注意:由於assert巨集只在debug版本中起作用,所以assert一般只用於內部函式對引數有效性進行檢查,如果該函式作為乙個外部介面來使用時,一般需要利用if,else語句進行防錯設計。——qdieyou

以下摘自《c高效程式設計》

【規則6-5-1】使用斷言捕捉不應該發生的非法情況。不要混淆非法情況與錯誤情況之間的區別,後者是必然存在的並且是一定要作出處理的。

【規則6-5-2】在函式的入口處,使用斷言檢查引數的有效性(合法性)。

【建議6-5-1】在編寫函式時,要進行反覆的考查,並且自問:「我打算做哪些假定?」一旦確定了的假定,就要使用斷言對假定進行檢查。

【建議6-5-2】一般教科書都鼓勵程式設計師們進行防錯設計,但要記住這種程式設計風格可能會隱瞞錯誤。當進行防錯設計時,如果「不可能發生」的事情的確發生了,則要使用斷言進行報警。

Python 斷言assert的使用

1 assert語句用來宣告某個條件是真的。2 如果你非常確信某個你使用的列表中至少有乙個元素,而你想要檢驗這一點,並且在它非真的時候引發乙個錯誤,那麼assert語句是應用在這種情形下的理想語句。3 當assert語句失敗的時候,會引發一assertionerror。測試程式 mylist ite...

Spring的Assert斷言使用

現象 spring的assert斷言使用 org.springframework.util.assert斷言工具類 方法 1 notnull notnull object object,string message 和 notnull 方法斷言規則相反的方法是 isnull object objec...

關於ASSERT 斷言 使用的規則

程式一般分為debug 版本和release 版本,debug 版本用於內部除錯,release 版本發行給使用者使用。斷言assert 是僅在debug 版本起作用的巨集,它用於檢查 不應該 發生的情況。示例6 5 是乙個記憶體複製函式。在執行過程中,如果assert 的引數為假,那麼程式就會中止...