日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

JML起步---使用JML 改進你的Java程序(4)

瀏覽:193日期:2024-06-28 18:13:34
內容: 來自:http://www-106.ibm.com/ 作者:Joe Verzulli 異常行為前面給出的行為規范要求調用peek() 和 pop()方法時隊列不能為空,但其實當隊列空時是有可能會調用這兩個方法的。如果發生這種情況,這兩個方法就會拋出一個NoSuchElementException.異常。我們必須修正我們前面制定的行為規范,允許這種可能的發生。在這種情況下,我們要使用JML的exceptional_behavior語句。 到目前,我們的行為規范還是以public normal_behavior打頭的。這里normal_behavior關鍵字表示這是一個正常行為,方法不會拋出任何異常。使用public exceptional_behavior標記可以用來描述拋出異常的行為。下面的代碼段顯示了類PriorityQueue中peek()方法的行為規范中的異常部分: 代碼段9 exceptional_behavior標記 /*@ @ public normal_behavior @ requires ! isEmpty(); @ ensures elementsInQueue.has(result); @ also @ public exceptional_behavior @ requires isEmpty(); @ signals (Exception e) e instanceof NoSuchElementException; @*//*@ pure @*/ Object peek() throws NoSuchElementException; 像我們前面看到的所有例子一樣,這個規范的第一部分也是以public normal_behavior開頭,表示正常行為;不同的是,這個規范還有第二部分,以public exceptional_behavior開頭,描述了異常行為。與normal_behavior 語句一樣, exceptional_behavior 語句也有一個 requires 語句。這個requires 語句表示當拋出signals 語句中所列的異常時必須滿足的條件。在上面的例子中,如果isEmpty()方法返回真的話,peek()就會拋出一個NoSuchElementException異常。 signals 語句signals 語句是形如signals(E e) R的語句,其中E是Exception類本身或其一個子類,R是一個表達式。JML 用如下方式解釋一個signal 語句:如果有一個類型為E的異常拋出的話,就檢查是否為R真。如果是,就執行既定規范;否則,拋出一個unchecked exception(譯者注:unchecked exception又叫做RuntimeException,關于這兩個概念,請參考Java語言中關于異常的描述),用以表示我們的程序代碼違背了exceptional_behavior規范的要求。 上面peek()方法中的signals語句的意思是如果隊列為空,就拋出一個NoSuchElementException異常。如果peek()方法在運行中拋出不是NoSuchElementException的其它異常的話,那么JML就會把這當成一個錯誤,因為e instanceof NoSuchElementException不是true。如果你既想處理NoSuchElementException異常又想處理其它運行期異常,我們可以修改上面的signals語句,改為signals (NoSuchElementException e) true; 。這個意思是說,如果peek()方法拋出一個NoSuchElementException異常的話,那條件true必須為真,而true是一個常量,總是可以滿足條件,所以對于NoSuchElementException異常的處理可以正常進行。不過我們這里并沒有提及關于其它異常的信息,而peek()方法可以拋出它的簽名(譯者注:方法的簽名是指,方法聲明的各個部分,具體來說,是方法名稱、參數類型、返回類型和拋出異常的總稱)允許的任何異常。它的簽名說它可以拋出NoSuchElementException異常,這就意味著它既可以拋出NoSuchElementException異常,又可以拋出RuntimeException。 如果隊列中存在一些元素而且當我們調用peek()方法時還是拋出一個NoSuchElementException異常(或者其他異常),JML運行期斷言檢查就會拋出一個unchecked exception,這表示正常的后置條件失敗。 結論本文簡單介紹了JML的概念,說明了它對面向對象系統的分析和設計的貢獻,通過實例演示了如何在Java程序中使用JML標記。你可以從下面所列的資源中下載本文中所使用的完整的代碼,還可以從中找到更多的關于JML的信息。 你可以使用開源的JML編譯器來編譯你含有JML標記的代碼,所生成的類文件會在運行時自動檢查JML規范。如果你的程序沒有實現規范中規定的事情,JML就會拋出一個unchecked exception 來說明你的程序違背了哪一條規范。這可以幫助我們捕獲程序中的bug,而且能保證我們的代碼與文檔(JML格式的文檔)高度一致。 JML運行期斷言檢查編譯器是第一個JML工具,其他相關工具還有jmldoc和jmlunit等等。Jmldoc與javadoc工具相似,不同的是它在生成的HTML格式文檔中包含JML規范;jmlunit可以成生一個Java類文件測試的框架,它可以讓你很方便地使用JUnit工具測試含有JML標記的Java代碼。你還可以從下面所列的資源中找到其他關于JML各個方面的相關內容。 在此請允許我向 Gary Leavens 和 Yoonsik Cheon表示深深的謝意,是他們幫我解決了一部分關于JML的疑問并且審閱了你所看到的這篇文章。 資源 下載本文中所用的源代碼 。 Sourceforge是JML規范、開源JML工具如JML編譯器、jmldoc、jmlunit以及相關信息的主頁。 PriorityQueue 接口和 BinaryHeap 類是開源項目 雅加達通用集合組件(JCCC)的一部分。 Gary T. Leavens、Albert L. Baker和Clyde Ruby的 'JML設計起步' (愛荷華州立大學計算機科學系,2003年1月) 是對JML的更為詳細地介紹。 Bertrand Meyer在面向對象軟件構造,第二版一書中關于通過契約(JML最基本的概念)進行設計的討論(Prentice Hall, 1997)。 Granville Miller在介紹面向對象系統建模中關于 Java建模 部分(developerWorks, 2002)。 Eric Allen在'Diagnosing Java code: Assertions and temporal logic in Java programming' (developerWorks, July 2002)一書中討論了一些斷言檢查限制的問題。 Kyle Brown在'A stepped approach to J2EE testing with SDAO' (developerWorks, March 2003)一文中討論了如何把模擬數據對象與分層測試聯合起來。 Java程序設計的各個方面的信息請參考IBM developerWorks Java專區。 Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd
標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久av一区二区三区| 久久亚洲精品伦理| 亚洲精品福利| 亚洲网址在线观看| 亚洲天堂av资源在线观看| 亚洲欧美日本国产专区一区| 亚洲深夜av| 日本欧洲一区二区| 国产亚洲激情| 蜜桃久久av一区| 日韩欧美中文字幕一区二区三区 | 日本va欧美va精品发布| 日韩av中文在线观看| 国产精品mv在线观看| 国内精品伊人| 99视频精品全部免费在线视频| 久久视频精品| 日韩中文字幕不卡| 国产情侣久久| av综合电影网站| 99国内精品| 日本aⅴ免费视频一区二区三区| 日本va欧美va欧美va精品| 欧美国产另类| 91精品国产福利在线观看麻豆| 国产亚洲毛片| 国产乱人伦精品一区| 国产一区国产二区国产三区 | 亚洲资源在线| 国产精久久一区二区| 亚洲一区资源| 水蜜桃久久夜色精品一区的特点| 日韩不卡免费视频| 福利欧美精品在线| 国产91久久精品一区二区| 黄色成人91| 日韩毛片网站| 福利一区和二区| 快she精品国产999| 精品三级国产| 伊人影院久久| 欧美久久精品| 日韩精品欧美| 青草综合视频| 影视先锋久久| 国产乱论精品| 亚洲精品国产偷自在线观看| 91大神在线观看线路一区| 国产66精品| 亚洲欧美日韩综合国产aⅴ| 国产乱码精品一区二区三区亚洲人| 亚洲播播91| 日韩高清一区二区| 久久久久久久久99精品大| 日韩欧美激情电影| 日本欧美不卡| 青青伊人久久| 91成人精品视频| 牛牛精品成人免费视频| 夜夜精品视频| 都市激情国产精品| 日本视频在线一区| 日韩视频在线一区二区三区 | 国产欧美日韩视频在线| 国产综合婷婷| 国产精品v一区二区三区| 婷婷成人基地| 国产在线日韩精品| 日韩福利视频导航| 成人av二区| 国产精品13p| 亚洲69av| 欧美日韩国产一区二区三区不卡 | 国产欧美日韩一级| 亚洲美洲欧洲综合国产一区| 国产精品亚洲四区在线观看 | 国内揄拍国内精品久久| 日韩在线观看中文字幕| 99久久99久久精品国产片果冰| 国产视频一区二| 亚洲一区日韩| 日韩精品影视| 欧美激情aⅴ一区二区三区| 亚洲精品福利| 丝袜诱惑制服诱惑色一区在线观看| 国产色播av在线| 国产精品中文| 亚洲精品看片| 久久av一区| 国产在线不卡| 久久九九电影| 亚洲一级少妇| 国产精品成人a在线观看| 久久wwww| 久久不见久久见中文字幕免费| 日本国产一区| 亚洲一区二区三区四区电影| 91成人精品| 久久国产小视频| 欧美aa一级| 日韩伦理福利| 日韩免费小视频| 日韩国产一区二区| 91一区二区三区四区| 九九九精品视频| 国产丝袜一区| 久久精品99国产精品| 日韩精品电影一区亚洲| 亚洲精品一二三**| 亚洲91在线| 91成人精品观看| 日韩精品欧美成人高清一区二区| 午夜在线视频观看日韩17c| 国产精品7m凸凹视频分类| 免费欧美一区| 欧美日韩国产综合网| 在线 亚洲欧美在线综合一区| 欧洲毛片在线视频免费观看| 亚洲精品午夜av福利久久蜜桃| 伊人久久亚洲美女图片| 亚洲一区日韩在线| 综合五月婷婷| 日韩成人在线看| 国产精品欧美大片| 美女精品一区二区| 日韩成人免费| 日本久久成人网| 精品丝袜在线| 91精品蜜臀一区二区三区在线 | 视频一区二区中文字幕| 蜜臀a∨国产成人精品| 亚洲人www| 欧美日韩1区2区3区| 欧美激情91| 日本а中文在线天堂| 激情欧美一区二区三区| 国产亚洲在线观看| 亚洲a成人v| 免费一级欧美在线观看视频| 国产一区二区三区视频在线| 国产精品久久久久久久久久10秀| 日韩精品不卡一区二区| 欧美粗暴jizz性欧美20| 免费的成人av| 国产毛片久久久| 久久久久免费| 中文精品视频| 欧美亚洲综合视频| 成人在线丰满少妇av| 亚洲韩日在线| 亚洲精品乱码| 精品中国亚洲| 99视频精品全部免费在线视频| 午夜日本精品| 日韩国产欧美在线播放| 国产精品1区| 成人啊v在线| 免费观看在线综合色| 国产精品欧美三级在线观看| av免费不卡国产观看| 欧洲激情综合| 国产精品午夜av| 日本欧美大码aⅴ在线播放| 亚洲免费影院| 国产精品久久久久久久久免费高清| 秋霞影院一区二区三区| 黄色网一区二区| 一区二区三区国产盗摄| 不卡在线一区二区| 石原莉奈在线亚洲三区| 久久中文字幕av| 五月国产精品| 国产成人久久精品麻豆二区 | 日本午夜精品视频在线观看| 国产一区二区三区四区大秀| 欧美在线亚洲| 国产精品久久亚洲不卡| 久久久夜夜夜| 18国产精品| 激情六月综合| 国产精品久久| 亚洲免费网址| 精品国产aⅴ| 蜜臀久久久99精品久久久久久| 老牛国内精品亚洲成av人片| 一区在线观看| 国产精品麻豆久久| 日韩福利视频导航| 国产精品88久久久久久| 精品免费av| 视频一区中文字幕精品| 日韩在线视频精品| 欧美午夜网站| 国产精品嫩草99av在线| 国产精品99一区二区三区| 亚洲人www| 久久理论电影| 国产欧美在线| 日韩影院在线观看| 日韩av一级|