麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > .NET > 正文

總結十條.NET異常處理建議

2024-07-10 13:29:37
字體:
來源:轉載
供稿:網友
.NET中從始至終要緊記異常處理的策略:拋出具體的一個異常,而不是只拋出Exception類型的異常,這樣能方便我們捕獲對應類型的異常。我們在編寫代碼時要注意考慮到應用程序最差的情況;顯示有好的信息,并提供適當的管理員聯系信息
 

.NET中從始至終要緊記異常處理的策略:拋出具體的一個異常,而不是只拋出Exception類型的異常,這樣能方便我們捕獲對應類型的異常。我們在編寫代碼時要注意考慮到應用程序最差的情況;顯示有好的信息,并提供適當的管理員聯系信息。

1、不要拋出“new Exception()”

請別這樣做。Exception是一個非常抽象的異常類,捕獲這類異常通常會產生很多負面影響。通常情況下應該定義我們自己的異常類,并且需要區分系統拋出的異常和我們自己拋出的異常。

2、不要將重要的異常信息存儲在Message屬性中

異常都封裝在類中。當你需要返回異常信息時,請將信息存儲在一些單獨的屬性中(而不要放在Message屬性中),否則人們很難從Message屬性中解析出他們需要的信息。比如當你僅僅需要糾正一下拼寫錯誤,如果你將錯誤信息和其它提示內容一起以String的形式寫在了Message屬性中,那么別人該怎樣簡單地獲取他們要的錯誤信息呢?你很難想象到他們要做多少努力。

3、每個線程要包含一個try/catch塊

一般異常處理都放在了程序中一個比較集中的地方。每個線程都需要有一個try/catch塊,否則你會漏掉某些異常從而出現難以理解的問題。當一個程序開啟了多個線程去處理后臺任務時,通常你會創建一個類型來存儲各個線程執行的結果。這時候請不要忘記了為類型增加一個字段來存儲每個線程可能發生的異常,否則的話,主線程不會知道其他線程的異常情況。在一些“即發即忘”的場合,你可能需要將主線程中的異常處理邏輯復制一份到你的子線程中去。

4、捕獲異常后要記錄下來

不管你的程序是使用何種方式記錄日志——log4net、EIF、Event Log、TraceListeners或者文本文件等,這些都不重要。重要的是:當你遇到異常后,應該在某個地方將它記錄在日志中。但是請僅僅記錄一次,否則的話,你最后會得到一個非常大的日志文件,包含了許多重復信息。

5、不要只記錄Exception.Message的值,還需要記錄Exception.ToString()

當我們談到記錄日志時,不要忘了我們應該記錄Exception.ToString()的值,而不是Exception.Message。因為Exception.ToString()包含了“堆棧跟蹤”信息,內部異常信息以及Message。通常這些信息非常重要,而如果你只記錄Exception.Message的話,你只可能看到類似“對象引用未指向堆中實例”這樣的提示。

6、要捕獲具體的異常

如果你要捕獲異常,請盡可能的捕獲具體異常(而非Exception)。好的代碼只能捕獲它知道該怎么處理的異常 

7、不要忘記使用using

僅僅調用對象的Dispose()方法是不夠的。即使異常發生時,using關鍵字也能夠防止資源泄漏 

8、不要使用特殊返回值去表示方法中發生的異常

1)、直接拋出異常更快,因為使用特殊的返回值表示異常時,我們每次調用完方法時,都需要去檢查返回結果,并且這至少要多占用一個寄存器。降低代碼運行速度。
2)、特殊返回值能,并且很可能被忽略
3)、特殊返回值不能包含堆棧跟蹤信息,不能返回異常的詳細信息
4)、很多時候,不存在一個特殊值去表示方法中發生的異常,比如,除數為零的情況 

9、不要將“拋出異常”作為函數執行結果的一種

這是一個非常糟糕的設計。代碼中包含太多的try/catch塊會使代碼難以理解,恰當的設計完全可以滿足一個方法返回各種不同的執行結果,如果你確實需要通過拋出異常來表示方法的執行結果,那只能說明你這個方法做了太多事情,必須進行拆分 

10、可以使用“拋出異常”的方式去著重說明不能被忽略的錯誤

例如我為我的一個產品開發了一個用來登錄的API(Login),如果用戶登錄失敗,或者用戶并沒有調用Login方法,那么他們調用其他方法時都會失敗。我在設計Login方法的時候這樣做的:如果用戶登錄失敗,它會拋出一個異常,而并不是簡單的返回false。正因為這樣,調用者(用戶)才不會忽略(他還沒登錄)這個事實。

ps: .Net異常處理的四要素

1.一個表示異常詳細信息的類。
2.一個像調用者引發異常類實例的成員。
3.調用者的一段調用異常成員的的模塊。
4.調用者的一段處理或捕獲將要發生異常的代碼塊。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 双性帝王调教跪撅打屁股 | 一及毛片视频 | 国内精品视频饥渴少妇在线播放 | 色就色 综合偷拍区91网 | 欧美一a一片一级一片 | 噜噜噜影院 | 免费网址黄 | 一区二区三区视频在线观看 | 国产亚洲精品久久久久婷婷瑜伽 | 日本一区二区视频在线观看 | 国产午夜精品久久久 | a视频网站| 激情小说激情图片激情电影 | 激情小说图 | 国产成人精品免费视频大全办公室 | 国产91丝袜在线播放 | 欧美日韩国产一区二区三区在线观看 | 日韩视频一区 | 成人三级视频网站 | 亚洲成人精品久久 | 国产乱淫a∨片免费观看 | 国产女厕所 | 亚洲视频观看 | 亚洲一级毛片 | 视频一区二区三区中文字幕 | 黄色小视频免费在线观看 | 中国女警察一级毛片视频 | 毛片午夜 | 欧美一级淫片免费视频1 | 亚洲精品一区二区三区大胸 | 亚洲精品aⅴ中文字幕乱码 欧美囗交 | 粉色视频污 | 毛片视频免费观看 | 黄色免费在线视频网站 | 色女人在线 | 欧美日韩国产综合网 | 91av资源在线 | 黄色影院av | 欧美成人做爰高潮片免费视频 | 在线播放黄色网址 | 中文字幕免费一区 |