<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>


    隨筆-35  評論-97  文章-0  trackbacks-0
     

    1.1.       語法表示

    兩種表達式,分別如下:

    assert expression1;

    assert expression1: expression2;

    1.2.       語義含義

    1.        在運行時,如果關閉了assertion功能,這些語句將不起任何作用。

    2.        如果打開了assertion功能,那么expression1的值將被計算,如果它的值為false,該語句強拋出一個AssertionError對象。如果assertion語句包括expression2參數(shù),程序?qū)⒂嬎愠?/span>expression2的結果,然后將這個結果作為AssertionError的構造函數(shù)的參數(shù),來創(chuàng)建AssertionError對象,并拋出該對象;如果expression1值為trueexpression2將不被計算。

    3.        一種特殊情況是,如果在計算表達式時,表達式本身拋出Exception,那么assert將停止運行,而拋出這個Exception

    1.3.       運行

    1.        這種程序必須在JDK1.4(或者更高版本)JRE下運行。

    2.        參數(shù) -esa -dsa
    它們含義為開啟(關閉)系統(tǒng)類assertion功能。 -esa-dsa的全名為-enablesystemassertions-disenablesystemassertions,全名和縮寫名有同樣的功能。

    3.        參數(shù) -ea -ea
    它們含義為開啟(關閉)用戶類的assertion功能。
    -ea
    -da的全名為-enableassertions-disenableassertions,全名和縮寫名有同樣的功能。
    下面表格表示了參數(shù)及其含義。

    參數(shù)

    例子

    說明

    -ea

    java -ea

    打開所有用戶類的assertion

    -da

    java -da

    關閉所有用戶類的assertion

    -ea:<classname>

    java -ea:MyClass1

    打開MyClass1assertion

    -da:<classname>

    java -da: MyClass1

    關閉MyClass1assertion

    -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

    打開系統(tǒng)類的assertion

    -dsa

    java -dsa

    關閉系統(tǒng)類的assertion

    綜合使用

    java -dsa:MyClass1:pkg1

    關閉MyClass1pkg1包的assertion

    其中...代表,此包和其子包的含義。例如我們有兩個包為pkg1pkg1.subpkg。那么pkg1...就代表pkg1pkg1.subpkg兩個包。

     

    1.4.       Assert使用場合

    1.4.1.                適宜使用場合

    1.        使用assert來檢查privateprotected函數(shù)中的參數(shù)預處理(preconditions)和后處理(postconditions)。

    2.        使用assert來檢查參數(shù)或者變量的特殊值,一旦參數(shù)或者變量為這些特殊值,則跟這些參數(shù)有變量有關的操作不應該出現(xiàn)。

    eg.  

    Object source = event.getSoure();

           Assert(source 
    != null);

           …….

           Int hc 
    = source.hashCode();//一些使用source的代碼

    3.        使用assert來檢查控制流(無效代碼分支)。

    eg.

           If(source == yesBtn){// do code
           }

           
    else If(source == noBtn){// do code
           }

           
    else If(source == cancelBtn){// do code
           }

           
    else{
            
    assert false"Invalid Source " +source.toString();
           }

    4.        使用assert來檢查你的返回值(傳遞條件)。

    Eg.

          

    public Object someMedth(){
                  Object result 
    = null;
                  ……  
    //do some code that sets result
                  Asset(result !=null); // check post condition
                  return result;
    }


    1.4.2.                不適宜使用場合

    1.        不要在public函數(shù)中使用assert來驗證參數(shù)。

    這些函數(shù)應該拋出NullPointerExceptionIllegalArgumentException,或者其他相關的exception

    2.        不要使用assert來檢查軟件用戶的錯誤。應該拋出IllegalArgumentException

    3.        不要使用assert來完成任何工作。如果你使用了assert來完成一些功能,那么assertions一旦被關閉了怎么辦?

    4.        不要無聊地將assert拋出的錯誤消息國際化。一旦assertions關閉,你不是白做工了?

    posted on 2007-05-19 01:42 三告習習 閱讀(638) 評論(0)  編輯  收藏 所屬分類: java/jdk
    主站蜘蛛池模板: 伊人久久大香线蕉免费视频| 亚洲a无码综合a国产av中文| 精品国产一区二区三区免费| 亚洲 综合 国产 欧洲 丝袜| 成人亚洲国产精品久久| 国产三级电影免费观看| 亚洲国产精品精华液| 国产高清免费观看| 日韩精品无码永久免费网站| 亚洲国产精品一区二区三区久久| 成人国产网站v片免费观看| 中文字幕无码精品亚洲资源网| 国产人成网在线播放VA免费| 中国亚洲女人69内射少妇| 中文字幕无码一区二区免费| 777亚洲精品乱码久久久久久 | 免费观看a级毛片| 国产精品亚洲一区二区三区| 亚洲精品第一国产综合境外资源| 大片免费观看92在线视频线视频| 亚洲人色婷婷成人网站在线观看| 精品无码国产污污污免费网站| 亚洲国产成a人v在线观看| 国产精品极品美女免费观看| 一级毛片试看60分钟免费播放| 亚洲精品无码永久中文字幕 | 成人毛片18女人毛片免费视频未 | 久久亚洲国产成人亚| 在线观看成人免费视频不卡| 亚洲av无码成人精品国产 | 亚洲理论片在线中文字幕| 国产午夜无码视频免费网站| 中文字幕免费在线看电影大全| 亚洲一区二区久久| 免费va在线观看| 十九岁在线观看免费完整版电影| 亚洲色大成WWW亚洲女子| 在线观看亚洲成人| 日韩吃奶摸下AA片免费观看| 一个人免费观看视频在线中文 | 亚洲AV无码AV男人的天堂|