用途:

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ù)邏輯的判斷。