第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

“ assert”關鍵字有什么作用?

“ assert”關鍵字有什么作用?

慕工程0101907 2019-11-06 11:01:27
怎么assert辦?例如在函數中:private static int charAt(String s, int d) {    assert d >= 0 && d <= s.length();    if (d == s.length()) return -1;    return s.charAt(d);}
查看完整描述

3 回答

?
呼如林

TA貢獻1798條經驗 獲得超3個贊

如果您有啟動您的程序-enableassertions(或-ea簡稱),那么這種說法


assert cond;

相當于


if (!cond)

    throw new AssertionError();

如果不使用此選項啟動程序,則assert語句將無效。


例如assert d >= 0 && d <= s.length();,如張貼在你的問題,相當于


if (!(d >= 0 && d <= s.length()))

    throw new AssertionError();

(如果您啟動的-enableassertions是。)


Java語言規(guī)范assert正式為:14.10。該聲明說:


14.10。的assert聲明

的斷言是一個assert含有一個布爾表達式語句。一個斷言啟用或者禁用。如果啟用了斷言,則斷言的執(zhí)行將導致對布爾表達式進行求值,并且如果表達式的求值為,則會報告錯誤false。如果斷言被禁用,則斷言的執(zhí)行不起作用。


當“啟用或禁用”控制與-ea開關和“報告錯誤”意味著AssertionError被拋出。


最后,一個鮮為人知的功能assert:

您可以: "Error message"像這樣追加:


assert d != null : "d is null";

指定應該拋出什么AssertionError的錯誤消息。


查看完整回答
反對 回復 2019-11-06
?
隔江千里

TA貢獻1906條經驗 獲得超10個贊

盡管我已經閱讀了很多有關此文檔的文檔,但是我仍然對如何,何時以及在何處使用它感到困惑。


使它很容易理解:


當您遇到類似情況時:


    String strA = null;

    String strB = null;

    if (2 > 1){

        strA = "Hello World";

    }


    strB = strA.toLowerCase(); 

您可能會收到警告(在strB = strA.toLowerCase()上顯示黃線),該警告可能會給strB產生NULL值。盡管您知道strB最終絕對不會為null,以防萬一,您可以使用assert來


1.禁用警告。


2.如果發(fā)生最壞的事情(運行應用程序時),將引發(fā)Exception錯誤。


有時,當您編譯代碼時,不會得到結果,這是一個錯誤。但是應用程序不會崩潰,并且您花費大量時間來查找導致此錯誤的原因。


因此,如果您將assert設置為:


    assert strA != null; //Adding here

    strB = strA .toLowerCase();

您告訴編譯器strA絕對不是空值,它可以“和平地”關閉警告。如果它為NULL(最壞的情況),它將停止應用程序并向您拋出錯誤以查找它。


查看完整回答
反對 回復 2019-11-06
  • 3 回答
  • 0 關注
  • 707 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號