亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C#異常處理的一些經(jīng)驗(yàn)和技巧

 更新時(shí)間:2014年03月20日 11:46:27   作者:  
本文是異常處理經(jīng)驗(yàn)性的文章,其實(shí)跟C#關(guān)系也不大。比較適合剛剛熟悉異常語(yǔ)法,而缺乏實(shí)戰(zhàn)的讀者。當(dāng)然,經(jīng)驗(yàn)老練的讀者也可指出不足、給予意見(jiàn)、補(bǔ)充說(shuō)明,一起完善文章,分享更多知識(shí)與經(jīng)驗(yàn)

1、什么時(shí)候該異常處理?
1)代碼最外層,如WinFrom,避免用戶看到內(nèi)部異常信息用戶體驗(yàn)不好,或者造成程序崩潰。
2)遇到異常需要恢復(fù)狀態(tài)或者重試的地方。例如連接數(shù)據(jù)庫(kù)偶然失敗了,可以有個(gè)重連機(jī)制,在Catch塊重新連接數(shù)據(jù)庫(kù)。
3)對(duì)于一系列有可能失敗的任務(wù),其中有一個(gè)任務(wù)失敗,不想影響到其他任務(wù)。例如要上傳100張圖片,不想因?yàn)橐粡垐D片上傳發(fā)生異常而失敗,進(jìn)而終止整個(gè)上傳任務(wù),僅需要記錄下失敗的圖片,提醒用戶重傳即可。
2、異常處理需要注意的地方
1)Catch和Finally代碼應(yīng)該非常短,而且成功率極高,避免自己又拋出一個(gè)異常。否則CLR會(huì)終止進(jìn)程,避免安全漏洞或者不可預(yù)知的后果。這個(gè)類(lèi)似于Windows藍(lán)屏,發(fā)生了嚴(yán)重的錯(cuò)誤,寧愿使系統(tǒng)不可用。
2)Catch塊盡量避免直接捕捉異常的基類(lèi)Exception,而應(yīng)該捕捉具體的異常類(lèi)。
3、異常處理的方法和技巧
1)是否能構(gòu)建統(tǒng)一的框架處理異常,而不用手工來(lái)處理呢?
有的人可能會(huì)問(wèn),能不能偷懶,在一個(gè)地方處理異常就行了。如果僅僅是記錄異常系統(tǒng)信息,通知到用戶,而且這些信息通常是可以缺少一些上下文的,是可以構(gòu)建同一的機(jī)制記錄異常信息的。

例如:
WinFrom的Application對(duì)象本身就提供了ThreadException時(shí)間來(lái)捕捉為處理的異常

復(fù)制代碼 代碼如下:

static void Main()
    {
      //注冊(cè)捕捉異常事件
      Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
      Application.EnableVisualStyles();
      Application.SetCompatibleTextRenderingDefault(false);
      Application.Run(new Form1());
    }
    static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
    {
      Exception ex = e.Exception;
      //做一些極其簡(jiǎn)單的記錄異常信息操作
    }

又例如:
WebFrom的Global.asax本身就已經(jīng)定義了void Application_Error(object sender, EventArgs e) 來(lái)處理異常
復(fù)制代碼 代碼如下:

void Application_Error(object sender, EventArgs e)
    {
      // 在出現(xiàn)未處理的錯(cuò)誤時(shí)運(yùn)行的代碼
      Exception ex = Server.GetLastError();
      //處理完異常后清除異常
      Server.ClearError();
    }

但是很多時(shí)候,異常處理,不僅僅只是記錄到了錯(cuò)誤信息就可以了,有時(shí)候是需要失敗重試或者清理資源等等,因此,僅僅靠統(tǒng)一構(gòu)建異常處理框架是不夠靈活的,因此可以一方面統(tǒng)一處理,另外一方面特殊的地方可以另外處理。

相關(guān)文章

最新評(píng)論