雜糅-assert斷言



assert 是斷言, 用的最多的就是測試了,譬如單元測試。

斷言看作是異常處理的一種高級形式。

spring源碼裏用的比較多,比如利用cookie自動登錄時,cookie保存了用戶名,和密碼,

這個cookie就只有兩個元素,我斷言一下,如果取到的對應的cookie裏的對象的元素不是兩個,

那麼直接拋異常,或者不往下處理了。


assert關鍵字語法很簡單,有兩種用法:

1、assert

如果爲true,則程序繼續執行。

如果爲false,則程序拋出AssertionError,並終止執行。

2、assert : <錯誤信息表達式>

如果爲true,則程序繼續執行。

如果爲false,則程序拋出java.lang.AssertionError,並輸入<錯誤信息表達式>。




//斷言1結果爲true,則繼續往下執行

asserttrue;

System.out.println("斷言1沒有問題,Go!");

System.out.println("\n-----------------\n");

//斷言2結果爲false,程序終止

assertfalse:"斷言失敗,此表達式的信息將會在拋出異常的時候輸出!";

System.out.println("斷言2沒有問題,Go!");



從JDK1.4版本開始,Java語言引入了斷言(assert)機制。目的:程序調試

測試代碼或者調試程序時,總會做出一些假設,斷言就是用於在代碼中捕捉這些假設

表現形式:斷言就是程序中的一條語句,它對一個boolean表達式進行檢查

一個正確程序必須保證這個boolean表達式的值爲true;如果該值爲false,說明程序已經處於不正確的狀態,系統給出警告或退出

如果沒有斷言機制,Java程序通常使用if-else或switch語句進行變量狀態檢查。

缺點:

由於檢查的數據類型不完全相同,這樣的語句形式不會統一。

因爲檢查僅僅是應用在測試階段,而if-else或switch語句在發佈以後仍然將起作用,如果消除這些代碼就意味着要註釋或者刪除這些代碼,如果這些代碼量很大就意味着工作很繁重並存在風險。

斷言的優點

Java程序員用統一的方式處理狀態檢查問題;

斷言只需在發行的時候關閉該功能即可。

斷言的開啓和關閉

在默認情況下斷言是關閉的,因此在使用斷言以前,需要先開啓斷言功能,方法:

java –ea MyClass                          或者

java –enableassertions MyClass

關閉斷言功能的方法:

java –da MyClass                           或者

java –disableassertions MyClass

注意:斷言檢查通常在開發和測試時開啓。爲了提高性能,在軟件發佈後,斷言檢查通常是關閉的

斷言的使用

Java中使用關鍵字assert標記斷言,語法格式爲:

assert Expression1

執行到assert語句時,如果Expression1的值爲true,則程序正常執行,如果值爲false,該語句創建一個Assertion Error對象,並拋出該對象。

assert Expression1:Expression2

斷言失敗時,系統會自動將Expression2的值傳遞給新建的AssertionError對象,進而將其轉換爲一個消息字符串保存起來,可以獲得更多、更有針對性的檢查失敗細節信息。

什麼時候使用斷言

通常來說,斷言用於檢查一些關鍵的值,並且這些值對整個程序,或者局部功能的完成有很大的影響。

斷言表達式應該短小、易懂,如果需要評估複雜的表達式,應該使用函數計算。

使用斷言的情況

檢查控制流:在if-else和switch語句中,可以在不應該發生的控制支流上加上assert語句。如果這種情況發生了,assert能夠檢查出來。

在私有方法計算前,檢查輸入參數是否有效

對於一些private的方法,要求輸入滿足一些特定的條件,可以在方法開頭使用assert進行參數檢查;對於公共方法,通常不使用斷言檢查

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章