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

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

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

瀏覽:192日期: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久久,三上悠亚国产精品一区二区三区
四虎精品永久免费| 国产精品网址| 国产高清一区二区| 综合五月婷婷| 欧美激情91| 成人精品亚洲| 欧美 日韩 国产一区二区在线视频| 中文在线一区| 国产日韩欧美| 久久久精品网| 综合激情在线| 日韩av片子| 国产视频久久| 国产日韩视频| 激情欧美一区二区三区| 亚洲另类黄色| 国产免费av一区二区三区| 私拍精品福利视频在线一区| 中文字幕视频精品一区二区三区 | 视频一区中文字幕精品| 91成人精品| 日韩激情一二三区| av资源亚洲| 一区二区高清| 国产理论在线| 日韩一区精品| 99视频精品全国免费| 日本不卡的三区四区五区| 日韩在线观看不卡| 日韩精品亚洲aⅴ在线影院| 热三久草你在线| 亚洲三级精品| 日本综合字幕| 国产欧美日韩在线观看视频| av资源亚洲| 日韩美女精品| 136国产福利精品导航网址| 国产精品亚洲欧美一级在线| 亚洲激情精品| 涩涩av在线| 国产精品一区二区三区美女| 国产偷自视频区视频一区二区| 久久亚洲精精品中文字幕| 免费美女久久99| 91精品蜜臀一区二区三区在线 | 国产麻豆精品| 每日更新成人在线视频| 日韩免费小视频| 国产精品男女| 色综合视频一区二区三区日韩| 伊人精品一区| 黄色欧美在线| 日本午夜精品一区二区三区电影| 亚洲网站视频| 日韩成人高清| 高清久久精品| 久久成人福利| 欧美在线精品一区| 亚洲免费一区二区| av亚洲一区二区三区| 国产伦精品一区二区三区在线播放| 视频一区国产视频| 欧美福利在线| 日韩欧美精品综合| 九九99久久精品在免费线bt| 日本aⅴ精品一区二区三区| 国产亚洲高清视频| 久久久久亚洲| 香蕉视频亚洲一级| 免费亚洲婷婷| 国产日韩欧美一区在线| 日本中文字幕一区二区视频| 蜜桃久久久久久| 国产一区导航| 精品中文字幕一区二区三区av| 久久99国产精品视频| 国产三级精品三级在线观看国产| 蜜桃视频在线观看一区| 国产亚洲福利| 欧美日韩日本国产亚洲在线| 久久精品1区| 久久久久久久久99精品大| 最新中文字幕在线播放| 福利欧美精品在线| 精品入口麻豆88视频| 久久久精品国产**网站| 国产极品模特精品一二| 国产欧美二区| 国产伦一区二区三区| 国产毛片一区二区三区 | 日韩欧美不卡| 美女网站视频一区| 久久天堂av| 久久一区二区中文字幕| 久久免费黄色| 香蕉人人精品| 91精品高清| 日韩中文字幕麻豆| 亚洲精品影视| 91免费精品国偷自产在线在线| 欧美一级全黄| 国产精品三p一区二区| 卡一卡二国产精品| 精品成av人一区二区三区| 都市激情国产精品| 日韩欧美午夜| 欧美日韩国产欧| 一区二区精品| 欧美日韩 国产精品| 嫩呦国产一区二区三区av| 久久精品五月| 九色porny丨国产首页在线| 国精品一区二区三区| 香蕉精品999视频一区二区| 伊人久久大香伊蕉在人线观看热v| 亚洲精品乱码日韩| 国产精品综合| 欧美www视频在线观看| 色偷偷偷在线视频播放| 久久高清免费| 美女精品一区| 国产精品一区二区美女视频免费看| 麻豆精品新av中文字幕| 在线一区视频观看| 男女激情视频一区| 国产亚洲观看| 五月激情久久| 鲁大师影院一区二区三区| 国产欧美日韩精品一区二区免费| 国产一区不卡| 国产精品普通话对白| 97精品久久| 日韩理论片av| 男女精品网站| 国产欧美69| 日本精品不卡| 亚洲久久在线| 国产成人精选| 国产毛片久久| 国产精品任我爽爆在线播放| 日韩欧美中文| 免费成人在线视频观看| 嫩草伊人久久精品少妇av杨幂| 久久国产直播| 91精品福利观看| 91精品国产乱码久久久久久久| 亚洲久久一区| 日韩深夜视频| 亚洲一区二区av| 精品国产网站| 美女国产精品| 荡女精品导航| 亚洲欧美日韩国产综合精品二区| 国产精品亚洲一区二区在线观看| 日本国产精品| 奇米亚洲欧美| 久久久久亚洲| 国产视频网站一区二区三区| 久久免费国产| 日韩欧美四区| 欧美sss在线视频| 日韩国产一区二| 欧美亚洲国产一区| 欧美精品国产白浆久久久久| 亚洲精品88| 日本中文字幕一区二区视频| 久久精品亚洲人成影院| 日韩国产在线观看一区| 久久久久99| 国产精品视频一区二区三区综合| 欧美日韩高清| 久久国产精品美女| 模特精品在线| 福利在线免费视频| 日韩国产精品久久久久久亚洲| 日韩精品免费一区二区三区| 国产欧美丝祙| 亚洲免费婷婷| 日韩欧美精品| 国产日韩精品视频一区二区三区| 99热免费精品| 国产不卡人人| 国产毛片一区二区三区| 在线精品观看| 1024精品久久久久久久久| 鲁鲁在线中文| 国产精品成人国产| 亚洲精品伊人| 99视频+国产日韩欧美| аⅴ资源天堂资源库在线| 国产午夜精品一区在线观看| 亚洲一区二区三区久久久| 欧美特黄a级高清免费大片a级| 福利在线一区| 国产一区 二区| 最新亚洲国产| 亚洲作爱视频| 亚洲性色视频| 日韩综合精品| 黄色在线网站噜噜噜|