亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Java 理論與實踐: 平衡測試,第 2 部分

2019-11-18 13:46:32
字體:
來源:轉載
供稿:網友

   這一簡短系列的 第 1 部分 介紹了如何進行有效測試,它構建了 FindBugs 插件來查找一個簡單的 bug 模式(只需調用 System.gc() 即可)。Bug 模式會標識有問題的編碼實踐,它們經常位于 bug 所在的區域。當然,并不是所有出現 bug 模式的地方都一定出現 bug,但這并不能抹殺 bug 模式檢測器的巨大作用。一個有效 bug 模式檢測器的主要功能是發現更高百分比的可疑代碼,使該模式具有更大的使用價值。創建 bug 模式檢測器可以提高使用價值;創建檢測器之后,無論是現在還是將來,您都可以在您需要的任何代碼上運行它,并且您可能對發現的問題感到驚奇。例如,第 1 部分 中的簡單檢測器顯示了對 System.gc() 的調用,在 JDK 1.4.2 中,它隱藏在 JPEG 圖像 I/O 庫中。

    編寫檢測器可以查找對特定靜態方法的調用,這并不困難,但是大多數的 bug 檢測器都包含相當多的分析和實現。在這一期的文章中,您將開發一個稱為 RuntimeException capture 的更小 bug 模式的檢測器(目前,FindBugs 發行版中已包含此 bug 檢測器。)

RuntimeException 捕捉

     用 java™ 語言進行異常處理的一個優點是:異常是一些對象,try-catch 機制了解異常類型的分層結構,并在客戶機如何處理錯誤處理方面提供實際靈活性。例如,假如不能找到文件,則 FileInputStream 構造函數會拋出 FileNotFoundException,該異常是 IOException 的一個子類。此傳統用法答應客戶機處理未發現文件的條件,這些條件是從其他與文件相關的條件中分離出來的(假如他們喜歡單獨捕捉 FileNotFoundException)。但是,他們還可以使用捕捉 IOException 的方法處理所有與文件相關的錯誤條件。

    另一方面,異常處理的主要缺陷是:在正確使用異常時,易于建立帶有三行或四行業務邏輯以及 20 或 30 行異常處理的方法。因為錯誤恢復代碼在測試時輕易出現錯誤并且執行困難,使一部分專門用于異常處理的代碼無所適從并輕易出錯。這種情況的典型示例如清單所示,其中帶有兩行 “真的” 代碼的方法需要三個獨立的捕捉塊,每個捕捉塊都執行完全相同的操作 —— 記錄該異常:


清單 1. 多個相同的捕捉塊
public void addInstance(String className) {    try {        Class clazz = Class.forName(className);        objectSet.add(clazz.newInstance());    }   catch (IllegalaccessException e) {        logger.log("Exception in addInstance", e);    }    catch (InstantiationException e) {        logger.log("Exception in addInstance", e);    }    catch (ClassNotFoundException e) {        logger.log("Exception in addInstance", e);    }}      

    請參見清單 1,您可能嘗試將三個捕捉塊合并成捕捉 Exception 的單獨捕捉塊,因為每個捕捉塊的捕捉恢復操作是相同的。乍一看,該策略似乎是一個好方法 —— 但代碼副本有錯誤,所以整合這些復制路徑應該是一種改進。不過,此 “改進” 經常會帶來意想不到的結果。因為 RuntimeException 擴展了 Exception,將三個捕捉塊合并成一個捕捉塊(如清單 2 所示),所以這會更改語義,現在,未經檢查的異常將被記錄(而不傳播)。此 bug 模式(其中 RuntimeException 輕易被超大捕捉塊捕捉)也稱為 RuntimeException 捕捉。


清單 2. RuntimeException 捕捉 bug 模式 —— 不要執行此模式
public void addInstance(String className) {    try {        Class clazz = Class.forName(className);        objectSet.add(clazz.newInstance());    }    catch (Exception e) {        logger.log("Exception in newInstance", e);    }}      

    bug 模式通常源自語言的模糊功能或類庫;出現此 bug 模式是因為 RuntimeException 擴展了 Exception,這稍微有點違反常理。對 RuntimeException 捕捉的修復非常輕易 —— 您需要了解以下問題:首先捕捉 RuntimeException,并在捕捉 Exception 之前重新將其拋出,如清單 3 所示。不過,即使知道 bug 模式及其修復方法,在代碼審查過程中也很輕易忘記執行它或忽略它,并且編譯器也不會通知您。這是引入 bug 模式的原因,幫助您避免違犯 “您已較好地了解” 之類的錯誤。


清單 3. 通過顯式處理 RuntimeException 修復 RuntimeException 捕捉
public void addInstance(String className) {    try {        Class clazz = Class.forName(className);        objectSet.add(clazz.newInstance());    }    catch (RuntimeException e) {        throw e;    }    catch (Exception e) {        logger.log("Exception in newInstance", e);    }}      



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕v亚洲ⅴv天堂| 欧美另类高清videos| 揄拍成人国产精品视频| 国产成人久久久精品一区| 国产精品高清在线观看| 亚洲国产精品人久久电影| 国产一区二区三区毛片| 国产精品免费小视频| 日韩高清av一区二区三区| 成人精品久久一区二区三区| 亚洲永久在线观看| 亚洲人成在线播放| 色综合天天狠天天透天天伊人| 久久精品成人欧美大片| 亚洲精品国产精品自产a区红杏吧| 国产欧美精品日韩精品| 97精品一区二区三区| 久久国产视频网站| 欧美激情小视频| 69久久夜色精品国产69| 成人免费观看49www在线观看| 久久久久亚洲精品成人网小说| 日韩视频免费大全中文字幕| 91免费欧美精品| 成人欧美一区二区三区在线湿哒哒| 日韩精品在线视频观看| 国产精品久久久久久久久久久新郎| 精品成人av一区| 久久韩剧网电视剧| 日韩国产中文字幕| 国产激情综合五月久久| 欧美日韩一区二区三区在线免费观看| 日韩精品中文字幕久久臀| 国产精品h在线观看| 黄色一区二区在线观看| 日韩欧美亚洲国产一区| 欧美日韩免费网站| 亚洲欧洲在线观看| 亚洲精品成a人在线观看| 中文字幕精品在线视频| 欧美激情精品久久久久久久变态| 日韩av在线网站| 亚洲精品久久久久久久久久久| 成人av在线网址| 久久艹在线视频| 国产91色在线免费| 97在线观看免费| 91久久国产精品91久久性色| 久久人人爽人人爽爽久久| 欧美大片在线看免费观看| 懂色av一区二区三区| 欧美日韩国产精品一区二区三区四区| 一区二区成人精品| 欧美精品在线观看91| 欧美大片免费看| 神马国产精品影院av| 欧美在线视频一区二区| 国产精品香蕉国产| 最近的2019中文字幕免费一页| 欧美一级黑人aaaaaaa做受| 欧美国产亚洲精品久久久8v| 日本精品一区二区三区在线| 国产精品欧美激情在线播放| 青青草精品毛片| 精品激情国产视频| 国产精品观看在线亚洲人成网| 欧美成人精品在线| 精品国内产的精品视频在线观看| 欧美午夜女人视频在线| 久久韩国免费视频| 亚洲人成电影在线观看天堂色| 欧美日韩国产成人在线| 亚洲精品欧美一区二区三区| 亚洲美女又黄又爽在线观看| 精品成人国产在线观看男人呻吟| 国产成人综合av| 91精品在线一区| 国产成人亚洲综合91精品| 亚洲乱码国产乱码精品精| 国产精品日日做人人爱| 欧美视频在线观看免费| 欧美剧在线观看| 日韩欧亚中文在线| 亚洲精品国产精品自产a区红杏吧| 51色欧美片视频在线观看| 国产91精品久久久久久久| 九九热精品视频在线播放| 日韩一区av在线| 国产精品无码专区在线观看| 黑丝美女久久久| 久久久亚洲成人| 91成人免费观看网站| 热久久免费国产视频| 97成人精品视频在线观看| 国内精品一区二区三区| 国产69精品久久久| 青青青国产精品一区二区| 国产精品丝袜视频| 日韩a**站在线观看| 日韩一区视频在线| 久久久久久久久久久免费精品| 国产亚洲精品久久久久久牛牛| 欧美高清视频免费观看| 亚洲欧洲午夜一线一品| 91免费国产网站| 亚洲欧美国产va在线影院| 国产一区二区三区四区福利| 欧美另类老女人| 国产视频在线观看一区二区| 国产精品久久久久aaaa九色| 亚洲九九九在线观看| 欧美激情va永久在线播放| 亚洲欧美在线第一页| 亚洲a∨日韩av高清在线观看| 55夜色66夜色国产精品视频| 深夜福利日韩在线看| 成人国产精品日本在线| 日韩欧美亚洲综合| 日本不卡视频在线播放| 亚洲大尺度美女在线| 一区二区三区久久精品| 久久躁狠狠躁夜夜爽| 亚洲一区中文字幕| 国产精品av电影| 久久人91精品久久久久久不卡| 亚洲综合av影视| 国产精品国产三级国产aⅴ浪潮| 亚洲国产成人久久综合一区| 性欧美亚洲xxxx乳在线观看| 91免费版网站入口| 98午夜经典影视| 欧美www视频在线观看| 欧美中文字幕在线观看| 欧美夜福利tv在线| 91成人在线播放| 国产有码一区二区| 欧美日韩精品中文字幕| 亚洲第一av在线| 国产精品亚洲аv天堂网| 91超碰caoporn97人人| 亚洲精品一区二区久| 国产一区二区三区视频在线观看| 亚洲xxxxx电影| 亚洲欧洲自拍偷拍| 欧美又大粗又爽又黄大片视频| 国产69精品99久久久久久宅男| 日韩中文字幕不卡视频| 日本精品一区二区三区在线播放视频| 欧美性高跟鞋xxxxhd| 国产色视频一区| 日韩亚洲第一页| 国产中文欧美精品| 夜夜嗨av一区二区三区四区| 国产精品入口免费视| 欧美激情综合色综合啪啪五月| 亚洲最新av网址| 久久久女女女女999久久| 亚洲第一福利网站| 国产精品综合不卡av| 亚洲欧美一区二区三区情侣bbw| 俺去亚洲欧洲欧美日韩| 国产视频在线观看一区二区| 九九热99久久久国产盗摄| 亚洲在线观看视频|