本文是異常處理經驗性的文章,其實跟c#關係也不大。比較適合剛剛熟悉異常語法,而缺乏實戰的讀者。當然,經驗老練的讀者也可指出不足、給予意見、補充說明,一起完善文章,分享更多知識與經驗。
1、什麼時候該異常處理?
1)**最外層,如winfrom,避免使用者看到內部異常資訊使用者體驗不好,或者造成程式崩潰,可以用log4net之類的框架記錄異常。
2)遇到異常需要恢復狀態或者重試的地方。例如連線資料庫偶然失敗了,可以有個重連機制,在catch塊重新連線資料庫。
3)對於一系列有可能失敗的任務,其中有乙個任務失敗,不想影響到其他任務。例如要上傳100張,不想因為一張上傳發生異常而失敗,進而終止整個上傳任務,僅需要記錄下失敗的,提醒使用者重傳即可。
2、異常處理需要注意的地方
1)catch和finally**應該非常短,而且成功率極高,避免自己又丟擲乙個異常。否則clr會終止程序,避免安全漏洞或者不可預知的後果。這個類似於windows藍屏,發生了嚴重的錯誤,寧願使系統不可用。
2)catch塊盡量避免直接捕捉異常的基類exception,而應該捕捉具體的異常類。
3、異常處理的方法和技巧
1)是否能構建統一的框架處理異常,而不用手工來處理呢?
有的人可能會問,能不能偷懶,在乙個地方處理異常就行了。如果僅僅是記錄異常系統資訊,通知到使用者,而且這些資訊通常是可以缺少一些上下文的,是可以構建同一的機制記錄異常資訊的。
例如:
static又例如:void
main()
static
sender, system.threading.threadexceptioneventargs e)
sender, eventargs e)
但是很多時候,異常處理,不僅僅只是記錄到了錯誤資訊就可以了,有時候是需要失敗重試或者清理資源等等,因此,僅僅靠統一構建異常處理框架是不夠靈活的,
因此可以一方面統一處理,另外一方面特殊的地方可以另外處理。
C 異常處理經驗 原則與方法
本文是異常處理經驗性的文章,其實跟c 關係也不大。比較適合剛剛熟悉異常語法,而缺乏實戰的讀者。當然,經驗老練的讀者也可指出不足 給予意見 補充說明,一起完善文章,分享更多知識與經驗。1 什麼時候該異常處理?1 最外層,如winfrom,避免使用者看到內部異常資訊使用者體驗不好,或者造成程式崩潰,可以...
Flex異常處理原則
flex異常處理原則 1.有一條清楚的訊息表明已經發生了乙個錯誤,不能簡單地try.catch乙個異常,而不加以處理。2.有乙個唯一的錯誤號,他可以據此訪問可方便獲得的客戶支援系統 3.問題快速得到解決,並且可以確信他的請求已經得到處理,或者將在設定的時間段內得到處理 幾條建議 如果無法處理某個異常...
c 異常處理的形式和原則
1.及時處理 發現異常隨即處理並恢復程式。2.丟擲異常 捕獲異常後,重新封裝異常資訊或直接拋給呼叫者 在可能發生異常的地方新增異常處理方法 屬性名稱 說明source 此屬性表示導致異常發生的應用程式或物件的名稱 message 提供引起異常的詳細資訊 stacktrace 此屬性提供在堆疊上所呼叫...