程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> JDK1.4新特性:斷言

JDK1.4新特性:斷言

編輯:JAVA編程入門知識

  摘要
  
  JDK1.4中引入的一個新特性之一就是斷言(assert),為程序的調試提供了強有力的支持,以下的文檔根據SUNTEC內容及相關內容組成。

  源代碼:

  /**
  * Simple examples of the use of the new assertion feature in JDK1.4
  *
  * @author S.Ritter 16/7/2001
  **/

  public class AssertExample {

    public static void main(String[] args) {
      int x = 10;
      if (args.length > 0) {
        try {
          x = Integer.parseInt(args[0]);
        } catch (NumberFormatException nfe) {
          /* Ignore */
        }
      }
      System.out.println("Testing assertion that x == 10");
      assert x == 10:"Our assertion failed";
      System.out.println("Test passed");
    }

  }

  由於引入了一個新的要害字,所以在編譯的時候就需要增加額外的參數,要編譯成功,必須使用JDK1.4的Javac並加上參數'-source 1.4',例如可以使用以下的命令編譯上面的代碼:

  javac -source 1.4 AssertExample.java

  以上程序運行使用斷言功能也需要使用額外的參數(並且需要一個數字的命令行參數),例如:

  java -ea AssertExample 1

  程序的輸出為:

  Testing assertion that x == 10
  Exception in thread "main" java.lang.AssertionError:
  Our assertion failed
  at AssertExample.main(AssertExample.java:20)

  由於輸入的參數不等於10,因此斷言功能使得程序運行時拋出斷言錯誤,注重是錯誤,這意味著程序發生嚴重錯誤並且將強制退出。斷言使用boolean值,假如其值不為true則拋出AssertionError並終止程序的運行。

   由於程序員的問題,斷言的使用可能會帶來副作用,例如:

  boolean isEnable=false;
  //...
  assert isEnable=true;

  這個斷言的副作用是因為它修改程序變量的值並且沒有拋出錯誤,這樣的錯誤假如不細心檢查很難發現。但是同時我們可以根據以上的副作用得到一個有用的特性,根據它測試是否將斷言打開了。

  /**
  * Simple examples test enable assertion feature in JDK1.4
  *
  * @author Cherami 25/4/2002
  **/

  public class AssertExample2 {

    public static void main(String[] args) {
      boolean assertEnable=false;
      assert assertEnable=true;
      if (assertEnable==false){
        throw new RuntimeException("Assertions should be enable");
      }
    }

  }

  假如我們不使用-ea參數運行上面的程序,則控制台將輸出:

  Exception in thread "main" java.lang.RuntimeException:
  Assertions should be enab
  le
  at AssertExample.main(AssertExample.java:14)


 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved