JAVA 之 assert 關鍵字 -- 斷言
1 2 3 4 5 6 7 8 9 10 |
|
1、assert <boolean表達式>
如果<boolean表達式>爲true,則程序繼續執行。
如果爲false,則程序拋出AssertionError,並終止執行。
2、assert <boolean表達式> : <錯誤信息表達式>
如果<boolean表達式>爲true,則程序繼續執行。
如果爲false,則程序拋出java.lang.AssertionError,並輸入<錯誤信息表達式>。
assert關鍵字用法簡單,但是使用assert往往會讓你陷入越來越深的陷阱中。應避免使用。筆者經過研究,總結了以下原因:
1、assert關鍵字需要在運行時候顯式開啓才能生效,否則你的斷言就沒有任何意義。而現在主流的Java IDE工具默認都沒有開啓-ea斷言檢查功能。這就意味着你如果使用IDE工具編碼,調試運行時候會有一定的麻煩。並且,對於Java Web應用,程序代碼都是部署在容器裏面,你沒法直接去控制程序的運行,如果一定要開啓-ea的開關,則需要更改Web容器的運行配置參數。這對程序的移 植和部署都帶來很大的不便。
2、用assert代替if是陷阱之二。assert的判斷和if語句差不多,但兩者的作用有着本質的區別:assert關鍵字本意上是爲測試 調試程序時使用的,但如果不小心用assert來控制了程序的業務流程,那在測試調試結束後去掉assert關鍵字就意味着修改了程序的正常的邏輯。
3、assert斷言失敗將面臨程序的退出。這在一個生產環境下的應用是絕不能容忍的。一般都是通過異常處理來解決程序中潛在的錯誤。但是使用斷言就很危險,一旦失敗系統就掛了。