最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

例如:
WinFrom的Application對象本身就提供了ThreadException時間來捕捉為處理的異常

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

static void Main()
    {
      //注冊捕捉異常事件
      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;
      //做一些極其簡單的記錄異常信息操作
    }

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

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

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

相關(guān)文章

  • C#取得隨機顏色的方法

    C#取得隨機顏色的方法

    這篇文章主要介紹了C#取得隨機顏色的方法,通過自定義函數(shù)實現(xiàn)隨機顏色的功能,非常具有實用價值,需要的朋友可以參考下
    2015-01-01
  • C#實現(xiàn)動態(tài)顯示及動態(tài)移除圖片方法

    C#實現(xiàn)動態(tài)顯示及動態(tài)移除圖片方法

    這篇文章主要介紹了C#實現(xiàn)動態(tài)顯示及動態(tài)移除圖片方法,對于C#的初學(xué)者了解圖像操作有一定的幫助,需要的朋友可以參考下
    2014-07-07
  • C#?生成隨機數(shù)的方法示例

    C#?生成隨機數(shù)的方法示例

    本文介紹了C#中的Random類,用于生成隨機數(shù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • C#實現(xiàn)獲取不同對象中名稱相同屬性的方法

    C#實現(xiàn)獲取不同對象中名稱相同屬性的方法

    這篇文章主要介紹了C#實現(xiàn)獲取不同對象中名稱相同屬性的方法,涉及C#操作類與對象屬性的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • C#更改tabControl選項卡顏色的方法

    C#更改tabControl選項卡顏色的方法

    這篇文章主要介紹了C#更改tabControl選項卡顏色的方法,結(jié)合實例形式較為詳細(xì)的分析了C#更改tabControl選項卡顏色的的具體步驟與相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2016-03-03
  • C#中Property和Attribute的區(qū)別實例詳解

    C#中Property和Attribute的區(qū)別實例詳解

    這篇文章主要介紹了C#中Property和Attribute的區(qū)別,較為詳細(xì)的分析了C#中Property和Attribute的功能、定義、區(qū)別及使用時的相關(guān)注意事項,需要的朋友可以參考下
    2015-06-06
  • 詳解c# 深克隆與淺克隆

    詳解c# 深克隆與淺克隆

    這篇文章主要介紹了c# 深克隆與淺克隆的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • C#使用RabbitMQ發(fā)送和接收消息工具類的實現(xiàn)

    C#使用RabbitMQ發(fā)送和接收消息工具類的實現(xiàn)

    RabbitMQ是一個消息的代理器,用于接收和發(fā)送消息,本文主要介紹了C#使用RabbitMQ發(fā)送和接收消息工具類的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • C# 實現(xiàn)微信自定義分享的示例代碼

    C# 實現(xiàn)微信自定義分享的示例代碼

    這篇文章主要介紹了C# 實現(xiàn)微信自定義分享的示例代碼,文中通過代碼示例給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,感興趣的同學(xué)可以自己動手嘗試一下
    2024-02-02
  • C# 給PPT中的圖表添加趨勢線的方法

    C# 給PPT中的圖表添加趨勢線的方法

    本文內(nèi)容分享通過C#程序代碼給PPT文檔中的圖表添加數(shù)據(jù)趨勢線的方法,需要的朋友可以參考下面文章的具體內(nèi)容
    2021-09-09

最新評論

崇义县| 兴文县| 布拖县| 偃师市| 三亚市| 龙陵县| 龙南县| 马公市| 马公市| 民丰县| 会东县| 二手房| 瑞丽市| 玛纳斯县| 达尔| 上饶市| 锡林郭勒盟| 石屏县| 苍南县| 扎兰屯市| 格尔木市| 祁东县| 买车| 兰溪市| 舟曲县| 江山市| 靖宇县| 遂平县| 罗城| 怀柔区| 同江市| 富裕县| 扬州市| 周口市| 华安县| 牟定县| 潜山县| 定兴县| 洞口县| 灵山县| 兖州市|