java -ea是什么,讓我們一起了解一下?
java -ea是斷言中的一個參數,斷言在默認情況下是關閉的,要在編譯時啟用斷言,需要使用source1.4標記,既javac source1.4Test.java,在運行時啟用斷言需要使用 -ea參數 。
下面我們介紹一下斷言在JAVA中的使用是怎樣的,注意JAVA是從JDK1.4才開始支持斷言的(添加了關鍵字assert),請注意老版的JRE不支持。
1、斷言概述
編寫代碼時,我們總是會做出一些假設,斷言就是用于在代碼中捕捉這些假設,可以將斷言看作是異常處理的一種高級形式,斷言表示為一些布爾表達式,程序員相信在程序中的某個特定點該表達式值為真,可以在任何時候啟用和禁用斷言驗證,因此可以在測試時啟用斷言而在部署時禁用斷言。同樣,程序投入運行后,最終用戶在遇到問題時可以重新起用斷言。使用斷言可以創建更穩定,品質更好且易于除錯的代碼,當需要在一個值為FALSE時中斷當前操作的話,可以使用斷言單元測試必須使用斷言(Junit/JunitX)。
除了類型檢查和單元測試外,斷言還提供了一種確定個種特性是否在程序中得到維護的極好的方法,使用斷言使我們向按契約式設計更近了一部常見的斷言特性。
前置條件斷言:代碼執行之前必須具備的特性。
后置條件斷言:代碼執行之后必須具備的特性。
前后不變斷言:代碼執行前后不能變化的特性。
?
2、斷言使用方式
斷言可以有兩種形式
1.assert Expression1
2.assert Expression1:Expression2
其中Expression1應該總是一個布爾值,Expression2是斷言失敗時輸出的失敗消息的字符串。如果Expression1為假,則拋出一個 AssertionError,這是一個錯誤,而不是一個異常,也就是說是一個不可控制異常(unchecked Exception),AssertionError由于是錯誤,所以可以不捕獲,但不推薦這樣做,因為那樣會使你的系統進入不穩定狀態。
3、起用斷言
斷言在默認情況下是關閉的,要在編譯時啟用斷言,需要使用source1.4標記 既javac source1.4 Test.java ,在運行時啟用斷言需要使用 -ea參數 。要在系統類中啟用和禁用斷言可以使用 -esa 和 -dsa參數。
例如:
public?class?AssertExampleOne{ ???public?AssertExampleOne(){} ???public?static?void?main(String?args[]){ ??????int?x=10; ??????System.out.println("Testing?Assertion?that?x==100"); ??????assert?x=100;"Out?assertion?failed!"; ??????System.out.println("Test?passed!"); ???} }
如果編譯時未加 -source1.4,則編譯通不過,在執行時未加 -ea 時輸出為:
Testing?Assertion?that?x==100 Test?passed
jre忽略了斷言的代碼,而使用了該參數就會輸出為:
Testing?Assertion?that?x==100 Exception?in?thread?"main"?java.lang.AssertionError:?Out?assertion?failed! ????????at?AssertExampleOne.main(AssertExampleOne.java:6)
?以上就是小編今天的分享了,希望可以幫助到大家。