日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java断言——Assertion

發(fā)布時間:2023/12/3 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java断言——Assertion 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

【0】README

0.1) 本文描述+源代碼均 轉(zhuǎn)自 core java volume 1, 旨在理解 java斷言——Assertion 的相關(guān)知識;


【1】使用斷言

1.1)斷言機制: 允許在測試期間向代碼中插入一些檢查語句。 當代碼發(fā)布時, 這些插入的檢測語句將被自動地移走;

  • 1.1.1)java 引入了 關(guān)鍵字assert, 有兩種形式:
    assert 條件; 和 assert 條件:表達式;
  • 1.1.2)以上兩種形式 都會對條件進行檢測: 如果結(jié)果為 false, 則拋出一個 AssertionException異常, 在第二種形式中, 表達式將被傳入 AssertionError 的構(gòu)造器中,并轉(zhuǎn)換成一個 消息字符串;

Annotation)

  • A1)表達式部分的唯一目的是產(chǎn)生一個消息字符串;
  • A2) AssertionError 對象并不存儲表達式的值, 因此,不可能在以后得到它;
  • A3)如JDK 所說, 如果使用表達式的值, 就會鼓勵coders 試圖從斷言中恢復(fù)程序的執(zhí)行, 這不符合斷言機制的初衷;

1.2)看個荔枝:

  • 1.2.1)要想斷言x 是一個 非負數(shù)值, 只需要簡單地使用下面這條語句:assert x >=0;
  • 1.2.2)或者:將 x 的實際值傳遞給 AssertionError 對象, 從而可以在后面顯示出來, assert x >=0 : x; (因為x 將被傳入AssertionError 構(gòu)造器, 并轉(zhuǎn)換為一個消息字符串)

【2】啟用和禁用斷言

2.1)默認情況下, 斷言被禁用。可以在運行程序時用 -enableassertions 或-ea 選項啟用它:
java -enableassertions MyApp

  • 2.1.1)需要注意的是: 在啟用或禁用斷言時不必重新編譯程序。啟用和禁用斷言是類加載器的功能, 當斷言被禁用時, 類加載器將跳過斷言代碼, 因此,不會降低程序運行的速度;
  • 2.1.2)也可以在某個類或某個包中使用斷言: 如, java -ea:MyClass -ea:com.mycompany.lib … MyApp
  • 2.1.3)也可以使用選項 -disableassertions 或 -da 禁用某個特定類和包的斷言: java -ea:… -da:MyClass MyApp

Attention)

  • A1)有些類不是由類加載器加載, 而是直接由虛擬機加載。 可以使用這些開關(guān)有選擇地啟用或禁用那些類中的斷言;
  • A2)然而, 啟用和禁用所有斷言的 -ea 和 -da 開關(guān)不能應(yīng)用到那些沒有類加載器的系統(tǒng)類上; 對于這些系統(tǒng)類來說, 需要使用 -enablesystemassertions/-esa 開關(guān)來啟用斷言;

【3】使用斷言完成參數(shù)檢查

3.1)在java中, 給出了 3種處理系統(tǒng)錯誤的機制(Mechanism):

  • M1)拋出一個異常;
  • M2)日志;
  • M3)使用斷言;

3.2)什么時候應(yīng)該選擇使用斷言呢?記住下面幾點(Points):

  • P1)斷言失敗是致命的, 不可恢復(fù)的;
  • P2)斷言的檢查只用于開發(fā)和測試階段;
    所以, 不應(yīng)該使用斷言向程序的其他部分通告發(fā)生了可恢復(fù)性的錯誤, 或者, 不應(yīng)該作為程序向用戶通告問題的手段。 斷言只應(yīng)該用于在測試階段確定程序內(nèi)部的錯誤位置;

3.3)看個荔枝:

  • 3.3.1)文檔指出, 如果方法中使用了錯誤的下標值,那么就會拋出一個異常, 這是方法與調(diào)用間約定的處理行為;
  • 3.3.2)如果對這個方法做個改動:
    @param a the array to be sorted (must not be null)
    現(xiàn)在, 這個方法的調(diào)用者就必須注意了: 不允許用null 數(shù)組調(diào)用這個方法, 并在這個方法的開頭使用斷言: assert a!=null;
  • 3.3.3)前置條件:計算機科學(xué)家把這種約定稱為前置條件;最初的方法對參數(shù)沒有前置條件, 即承諾在任何條件下都能夠給予正確的執(zhí)行;修訂后的方法有一個前置條件, 即 a 非空;
  • 3.3.4)如果調(diào)用者在調(diào)用這個方法時沒有提供滿足這個前置條件的參數(shù), 所有的斷言都會失敗, 并且這個方法可以執(zhí)行它想做的任何操作;

【4】為文檔假設(shè)使用斷言

Conclusion)斷言和日志記錄的區(qū)別: 斷言是一種測試和調(diào)試階段所使用的戰(zhàn)術(shù)性工具, 而日志記錄是一種在程序的整個生命周期都可以使用的策略性工具;

  • API java.lang.ClassLoader 1.0
    void setDefaultAssertionStatus(boolean b) 1.4 : 對于通過類加載器的所有類來說, 如果沒有顯式地說明類或包的斷言狀態(tài), 就啟用或者禁用斷言;
    void setClassAssertionStatus(string className, boolean b) 1.4 :對于給定類和它的內(nèi)部類, 啟用或者禁用斷言;
    void setPackageAssertionStatus(string packageName, boolean b) 1.4 :對于給定包或其子包中的所有類, 啟用或禁用斷言;
    void clearAssertionStatus() 1.4 :移除所有類和包的顯式斷言狀態(tài)設(shè)置, 并禁用所有通過這個類加載器加載的類的斷言;

總結(jié)

以上是生活随笔為你收集整理的java断言——Assertion的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩精品高清在线观看 | 美女又爽又黄 | 老熟妇毛片 | 国模小丫大尺度啪啪人体 | 国产精品免费无遮挡无码永久视频 | 国产馆在线观看 | 美女国产毛片a区内射 | 成人精品一区二区 | 中文字幕在线视频观看 | 午夜影院0606 | 亚洲啪啪免费视频 | 久久综合桃花网 | a中文字幕 | 久久精品久久国产 | 97超碰免费在线观看 | 欧美精品一二三四 | 五月婷婷爱爱 | 在线观看日韩中文字幕 | 白浆在线播放 | 国产吞精囗交免费视频网站 | 九九久久九九久久 | 欧美有码视频 | 日本亲子乱子伦xxxx | 天天玩夜夜操 | 国产三级午夜理伦三级 | 午夜电影一区二区三区 | 无遮挡裸光屁屁打屁股男男 | 91在线观看免费高清 | 姐姐av| 国产裸体视频网站 | 久久草av| 99人妻碰碰碰久久久久禁片 | 国产一级片精品 | 毛片视频大全 | 爱爱91| 国产精品久久久久久久久 | 国产艳妇疯狂做爰视频 | 亚洲大片 | 久久亚洲综合 | 欧亚免费视频 | 精品天堂| 久久久精品人妻一区二区三区 | 少妇久久久久久被弄高潮 | 手机在线看片你懂的 | 亚洲欧美一区二区视频 | 777久久久精品一区二区三区 | 亚洲最大网| 伊人久久免费 | 国产乱淫片视频 | 天天综合永久入口 | 性欧美色图 | 欧美黑人精品一区二区不卡 | 欧美射图 | 欧美性大战久久久 | 免费天堂av | 日韩美一区二区三区 | 欧美黄色免费看 | 国产成人在线免费观看视频 | 99热偷拍 | 荷兰女人裸体性做爰 | 少妇做爰免费理伦电影 | 伊人久久五月 | 中国一级免费毛片 | 在线看a级片 | 精品国产成人av在线免 | www.haoav| 久久免费的精品国产v∧ | 婷婷一区二区三区 | 天天干夜夜欢 | 91视频入口 | 欧美一区二区免费在线观看 | 激情综合网婷婷 | 97综合视频 | 日韩a级在线观看 | 国产第一页第二页 | 深夜福利视频在线观看 | 久久久久人妻精品色欧美 | 在线观看污网站 | 免费午夜激情 | 日本三级黄在线观看 | 久久福利一区 | 美日韩视频 | 久久九九国产视频 | 亚洲一品道 | 97超碰成人 | 日本免费黄色片 | 91亚洲国产成人精品一区二区三 | 激情丁香 | 日韩免费av网站 | 色www亚洲国产张柏芝 | 日韩欧美一卡二卡 | 污视频大全 | 国产91视频在线观看 | 婷婷激情丁香 | 欧美射图| 很黄很污的视频网站 | 综合久久久久 | 男女激情免费网站 | 天堂综合 |