斷言:在開發階段的代碼中嵌入,檢驗某些“假設”是否 成立。若成立,表明程式運作正常,否則表明存在錯誤。
assertion主要形式:
– assert condition;
– assert condition : message;
eg:
assert (number >= 0) : "number is negative: " + number;
assert x >= 0 : “x is ” + x;
assert後括号中的布爾表達式為false時,會抛出一個AssertionError錯誤。
括号可省
assert x >= 0 : “x is ” + x;
assertion主要用途:
1.内部不變量,檢測變量值。
2.表示不變量,checkRep()每次執行一個方法前後都要運作一次。
3控制流不變量,switch中的defaultcase可用assertion終止。
如果不想被關閉用throw new AssertionError(msg);
4方法前置條件
5方法後置條件
assertion的代價:
1.斷言主要用于開發階段,避免引入 和幫助發現bug,實際運作階段, 不再使用斷言,避免降低性能。使用斷言的主要目的是 為了在開發階段調試程式、盡快避免錯誤
java預設關閉斷言,用-ea打開
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL6FleONTU65EeRpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLwgjM5IDO1IjM2ETNwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
2.用在刀刃上檢查,不要檢測能明顯看出成立的表達式。
3.assertion可以被停用,是以不要在assertion中進行操作
4.程式之外的外部錯誤咱管不了,也管不着
5.用斷言處理絕不應當發生的情況