JAVA 之 assert 關鍵字 -- 斷言

JAVA 之 assert 關鍵字 -- 斷言

1

2

3

4

5

6

7

8

9

10

public static void main(String[] args) {

        System.out.println("123");

         

        int a = 0;

        int b = 1;

        assert a == b; //需顯示開啓,默認爲不開啓狀態 

        assert a == b : "執行失敗!";

         

        System.out.println("1234");

    }

 

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斷言失敗將面臨程序的退出。這在一個生產環境下的應用是絕不能容忍的。一般都是通過異常處理來解決程序中潛在的錯誤。但是使用斷言就很危險,一旦失敗系統就掛了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章