成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

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

瀏覽:157日期: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
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
欧美日韩国产首页在线观看| 久久精品欧美日韩| 精品久久五月天| 蜜桃视频免费观看一区| 欧美专区在线| 亚洲在线视频网站| 99在线精品免费视频九九视| 国产亚洲欧美日韩在线一区| 成a人片国产精品| 欧美tickling挠脚心丨vk| 久久99国产精品久久99果冻传媒| 亚洲伊人观看| 一区二区三区免费网站| 99精品99久久久久久宅男| 亚洲日本在线天堂| 亚洲黄色av| 自拍av一区二区三区| 亚洲高清资源| 亚洲最新视频在线播放| 国产日韩欧美高清免费| 亚洲三级电影全部在线观看高清| 亚洲大胆av| 亚洲天堂免费看| 亚洲动漫精品| 亚洲午夜久久久久久久久久久 | 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 国产精品乱人伦| 欧美午夜视频在线| 国产精品免费人成网站| 亚洲国产裸拍裸体视频在线观看乱了中文| 国产精品久久久久久一区二区三区| 色综合天天在线| 亚洲国产高清在线观看视频| 欧美午夜一区| 亚洲视频在线观看三级| 中国成人在线视频| 性感美女极品91精品| 午夜在线精品| 日韩综合一区二区| 欧美午夜不卡在线观看免费| 国产伦精一区二区三区| www日韩大片| 国色天香一区二区| 亚洲一区在线看| 欧美曰成人黄网| 国产综合一区二区| 精品理论电影在线| 日韩精品中文字幕一区二区三区| 影院欧美亚洲| 蓝色福利精品导航| 欧美特黄视频| 中文字幕亚洲精品在线观看 | 欧美日韩精选| 一区二区免费看| 中文字幕精品在线不卡| 狠狠色综合一区二区| 亚洲免费观看高清完整版在线观看| 国产女主播一区二区| 五月婷婷综合在线| 91精品国产综合久久精品图片 | 免费在线一区二区| 国产精品美日韩| 一区二区视频欧美| www日韩大片| 榴莲视频成人在线观看| 久久国产精品一区二区| 欧美一区二区三区免费观看视频| 久久久久久久久久久一区| 欧美亚洲综合网| 亚洲国产精品第一区二区| 欧美色综合天天久久综合精品| 免费不卡在线视频| 日韩精品一区在线| 狠狠综合久久| 美国三级日本三级久久99| 久久这里只有精品首页| 国产欧美一区二区三区国产幕精品| 精品一区二区在线看| 久久综合一区二区| 亚洲男女自偷自拍| 国产精品一色哟哟哟| 中文字幕av一区二区三区| 久久综合九色99| 成人蜜臀av电影| 亚洲免费在线观看视频| 欧美色网一区二区| 韩国一区二区三区在线观看| 蓝色福利精品导航| 国产精品国产精品国产专区不蜜| 日本高清不卡一区| 欧美a级在线| 日韩福利视频网| wwwwxxxxx欧美| 欧美中文字幕| 91丨九色丨蝌蚪富婆spa| 日本强好片久久久久久aaa| 久久嫩草精品久久久久| 久久久国产精品一区二区中文| 春色校园综合激情亚洲| 亚洲欧美视频一区| 欧美精品九九99久久| 1024精品一区二区三区| 国产麻豆精品theporn| 亚洲精品免费在线播放| 精品卡一卡二卡三卡四在线| 久久香蕉精品| 欧美日韩一区二区三区在线视频| 日本美女一区二区| 国产精品福利一区二区三区| 69av一区二区三区| 国产伦精品一区二区三区视频黑人 | 日韩国产高清影视| 国产欧美一区二区精品性| 欧美色爱综合网| 99精品视频免费观看视频| 国产不卡在线一区| 婷婷成人激情在线网| 欧美国产97人人爽人人喊| 欧美日韩免费观看一区二区三区| 伊人久久婷婷色综合98网| 国产成人免费视频网站| 亚洲国产精品一区二区www在线 | 亚洲蜜桃精久久久久久久| 日韩欧美国产精品| 日本精品裸体写真集在线观看 | 亚洲激情成人在线| 国产亚洲精品aa| 4438亚洲最大| 国产视频一区三区| 99久久99久久精品免费看蜜桃 | 国产精品高清亚洲| 日韩欧美在线观看一区二区三区| 欧美综合二区| 一色屋精品视频在线看| 成人手机电影网| 老司机精品视频一区二区三区| 亚洲一卡二卡三卡四卡五卡| 中文字幕av一区二区三区高 | 免费一区视频| 亚洲精华国产欧美| 欧美xxx在线观看| 成人三级伦理片| 狠狠色狠狠色综合系列| 亚洲成人av免费| 亚洲男帅同性gay1069| 中文字幕第一区二区| 久久在线观看免费| 精品国产乱码久久久久久夜甘婷婷| 在线成人av影院| 91成人网在线| 另类图片国产| 夜夜精品视频| 亚洲香蕉网站| 欧美不卡在线| av动漫一区二区| 成+人+亚洲+综合天堂| 激情综合色综合久久综合| 午夜精品福利一区二区三区av| 樱花影视一区二区| 亚洲欧美偷拍卡通变态| 亚洲欧洲精品一区二区三区| 久久亚洲精华国产精华液 | 亚洲一级一区| 91视频你懂的| 波多野结衣中文字幕一区二区三区| 久久精品国产色蜜蜜麻豆| 秋霞影院一区二区| 日本免费在线视频不卡一不卡二| 五月综合激情网| 日韩av电影天堂| 奇米色一区二区| 日韩中文字幕麻豆| 日韩成人免费电影| 日日摸夜夜添夜夜添精品视频| 午夜欧美一区二区三区在线播放| 亚洲国产成人av网| 日日夜夜免费精品视频| 日韩精品一级二级| 蜜桃精品在线观看| 精品一区精品二区高清| 激情五月播播久久久精品| 狠狠v欧美v日韩v亚洲ⅴ| 狠狠色伊人亚洲综合成人| 国产乱码字幕精品高清av| 国产精品1区2区3区| 高清av一区二区| 91麻豆免费在线观看| 欧美99久久| 在线欧美亚洲| 亚洲一区观看| 老司机亚洲精品| 色94色欧美sute亚洲线路一ni| 在线观看不卡一区| 欧美日韩一级二级| 欧美成人精品1314www| 久久久久久久久99精品| 中文字幕精品综合| 一区av在线播放| 日韩精品高清不卡| 国产在线精品一区二区夜色|