2017年11月11日 星期六

Assert 斷言

assert有兩種版本
  1. 簡易版(必為)boolean值,範例如下
    • assert(x == 1);
    • assert(b);
    • assert true;
  2. 除錯版,後者一定要有回傳值(前者為boolean值(+冒號+)後者會幫忙轉成String後印出,就像是呼叫System.out.pritnln(),然後 顯示在stackTrace內,會多一點除錯的線索
    • assert(x == 1) : x;
    • assert(x == 1) : aReturn(); assert(x == 1) : new ValidAssert();
版本:
  • Java 1.4 前,assert可以拿來當identifier。假如使用Java1.3 編譯,則assert當作identifier則會出現警告 ; 但如果使用assert當作keyword,則編譯會失敗!
  • 1.4 後,只能是key保留字。若當作identifier編譯會失敗。

若檔案內已經把assert當作identifier使用,則可以使用較低版本編譯:
javac -source 1.4 CH10/Test7.java

假如欲使用Java 6的規則,可使用-source 1.6 或 -source 6 (兩者一樣)
javac -source 1.6 CH10/Test7.java
javac -source 6 CH10/Test7.java

執行時開啟assert:
預設是關閉的,若要打開可加入-ea或-enableassertions啟動:
java -ea com.geeksanonymous.TestClass
java -enableassertions com.geeksanonymous.TestClass

關閉是-da或-disableassertions:
java -da com.geeksanonymous.TestClass
java -disableassertions com.geeksanonymous.TestClass

沒有留言:

張貼留言