• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • JDK1.4新特性:斷言

    發表于:2007-07-14來源:作者:點擊數: 標簽:
    JDK1.4中引入的一個新特性之一就是斷言(assert),為程序的調試提供了強有力的支持,以下的文檔根據SUNTEC內容及相關內容組成。 源代碼: /** * Simple examples of the use of the new assertion feature in JDK1.4 * * @author S.Ritter 16/7/2001 **/ pu

    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)

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>