java在eclipse中使用assert(斷言)

主要總結一下在eclipse中如何使用斷言。

(一)首先明確:

   java斷言Assert是jdk1.4引入的。

jvm 斷言默認是關閉的。

斷言是可以局部開啓的,如:父類禁止斷言,而子類開啓斷言,所以一般說“斷言不具有繼承性”。

   斷言只適用於複雜的調試過程。

斷言一般用於程序執行結果的判斷,千萬不要讓斷言處理業務流程。

二)判斷eclipse是否開啓了斷言,代碼如下:

public class AssertTest {

public static void main(String[] args) {
   boolean isOpen = false;  
   assert isOpen=true; //如果開啓了斷言,會將isOpen的值改爲true
   System.out.println(isOpen);//打印是否開啓了斷言   
}

}

執行上面代碼,如果打印 true說明已經啓用了斷言,如果爲 false 則沒有啓用斷言。

如果沒有啓用斷言,則按按照下面方法開啓斷言。

(三)eclipse中開啓斷言

選擇菜單:Run ---> Run... ---> 選擇 Arguments 選項卡

VM arguments 文本框中輸入: -ea   注意 中間沒有空格,如果輸入 -da 表示禁止斷言。

然後關閉該窗口,提示保存,然後保存就開啓了斷言。如下圖:


diyblPic

再次執行第二步操作,如果打印true,說明開啓斷言成功。

如果禁止斷言,則按第二步操作中,刪除 -ea 或者將 -ea 改爲 -da 即可。

(四)斷言使用

第 1 種使用方法:

public static void main(String[] args) {
   boolean isOk = 1>2;
   assert isOk;
   System.out.println("程序正常");
   
}

因爲 1>2 顯然是錯誤的,所以執行結果拋出異常:Exception in thread "main" java.lang.AssertionError

如果把 1>2 改爲 1<2 則程序能順利執行,打印 “程序正常”

第 2 種使用方法:

public static void main(String[] args) {
     boolean isOk = 1>2;
     try{
           assert isOk : "程序錯誤";
           System.out.println("程序正常");
        }catch(AssertionError err){
          System.out.println(err.getMessage());
     }
   
}

assert 後面跟個冒號表達式。如果冒號前爲 true,則冒號後面的被忽略。

如果冒號前爲false,則拋出AssertionError , 錯誤信息內容爲冒號後面的內容,上面程序執行結果就是打印:"程序錯誤"

(五)有關斷言的更多參數(轉帖一下):

-ea java -ea 打開所有用戶類的assertion
-da java -da 關閉所有用戶類的assertion
-ea:<classname> java -ea:MyClass1 打開MyClass1的assertion
-da:<classname> java -da: MyClass1 關閉MyClass1的assertion
-ea:<packagename> java -ea:pkg1 打開pkg1包的assertion
-da:<packagename> java -da:pkg1 關閉pkg1包的assertion
-ea:... java -ea:... 打開缺省包(無名包)的assertion
-da:... java -da:... 關閉缺省包(無名包)的assertion
-ea:<packagename>... java -ea:pkg1... 打開pkg1包和其子包的assertion
-da:<packagename>... java -da:pkg1... 關閉pkg1包和其子包的assertion
-esa java -esa 打開系統類的assertion
-dsa java -dsa 關閉系統類的assertion
綜合使用 java -dsa:MyClass1:pkg1 關閉MyClass1和pkg1包的assertion

發佈了24 篇原創文章 · 獲贊 2 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章