用途:
assertion(斷言)在軟件開發(fā)中是一種常用的調(diào)試方式
在實現(xiàn)中,assertion就是在程序中的一條語句,它對一個boolean表達(dá)式進(jìn)行檢查,一個正確程序必須保證這個boolean表達(dá)式的值為true;如果該值為false,說明程序已經(jīng)處于不正確的狀態(tài)下,系統(tǒng)將給出警告或退出。一般來說,assertion用于保證程序最基本、關(guān)鍵的正確性。
assertion檢查通常在開發(fā)和測試時開啟。為了提高性能,在軟件發(fā)布后,assertion檢查通常是關(guān)閉的
通常來說,assertion用于檢查一些關(guān)鍵的值,并且這些值對整個程序,或者局部功能的完成有很大的影響,并且這種錯誤不容易恢復(fù)的。
在語法上,為了支持assertion,Java增加了一個關(guān)鍵字assert。它包括兩種表達(dá)式,分別如下:
1. assert exdivssion1;
2. assert exdivssion1: exdivssion2;
在兩種表達(dá)式中,exdivssion1表示一個boolean表達(dá)式,exdivssion2是斷言失敗時輸出的失敗消息的字符串。
如果Expression1為假,則拋出一個 AssertionError,這是一個錯誤(Error),而不是一個異常,也就是說是一個不可控制異常(unchecked Exception),AssertionError由于是錯誤,所以可以不捕獲,但不推薦這樣做,因為那樣會使你的系統(tǒng)進(jìn)入不穩(wěn)定狀態(tài)。
二.啟用斷言
Eclipse: compiler1.4以上,run->Arguments->VM arguments 添加-ea參數(shù)
命令行:使用-ea選項
總結(jié):
一般來說,assertion用于保證程序最基本、關(guān)鍵的正確性。
Java 斷言屬于運(yùn)行時斷言,即可以在運(yùn)行時通過選項決定打開還是關(guān)閉。
因為斷言可能被禁用,因此Java 斷言不能用于做業(yè)務(wù)邏輯的判斷。