似乎 C/C++ 的編程人員相比于 java 更偏愛于斷言,JDK 1.4 才開始引入 assert 的支持,但默認是關閉的,需要用 -ea
編譯選項打開,否則代碼中的 assert
語句全被忽略,一般會在單元測試中開啟該選項。簡單回顧一下 JDK 自帶的斷言,它用兩種寫法
assert object != null;assert object != null : "object can't be null";
第一個參數是個 bool 值,斷言失敗只會笼統的拋出
java.lang.AssertionError
異常,并不區分是在檢驗方法參數還是中間運算結果。嚴謹來說我們會希望參數檢查不通過時拋出java.lang.IllegalArgumentException
; 而中間運算結果的斷言不過希望拋出java.lang.AssertionError
, 最好是java.lang.IllegalStateException
。很多時候我們不會去使用
-ea
編譯選項,也就是主動放棄了 JDK 本身的斷言功能。介于兩個因素(不同的斷言錯誤和默認的斷言選項關閉),Scala 為我們提供了更方便的參數檢查與斷言方法,它們來自于 PRedef, 其所定義的方法可以直接使用
閱讀全文 >>
新聞熱點
疑難解答