c#自訂異常處理

來源:互聯網
上載者:User

在另一篇文章裡,我說了.NET異常處理機制中的自訂異常處理,今天我要說的是另外一種異常處理。

在寫處理常式異常的過程中,可能會遇到各種不同類型的異常,而已要拋出不同的人性化提示,如果統一拋出一樣的提示,就不人性化了,

我們一般的處理方法 是:

  1. public void Update()
  2. {
  3.        try
  4.        {   }
  5.        catch(SqlExcetion ex)
  6.        {
  7.               throw new excetion(ex);
  8.         }
  9.         catch(IOExcetion ex)
  10.          {
  11.                   throw new excetion(ex);
  12.           }
  13.           //其它異常…
  14.           catch (Exception ex)
  15.             {
  16.                 throw new Exceptioin(ex);
  17.             }
  18. }

                 或者採用異常嵌套(異常裡嵌套異常,這裡就不上代碼 了) 但是這種方法有一個問題,如果有多個地方要這樣處理,那我們真的成了代碼工人了。所以,用一個類來管理它吧。在這裡我們叫它,異常處理類。
  1.   /// <summary>
  2.     /// 全域異常處理類
  3.  ///作者:資料庫之家(http://www.uol123.com)
  4.     /// </summary>
  5.     [Serializable]
  6.     public class ExceptioinManage :Exception
  7.     {
  8.         /// <summary>
  9.         /// 預設建構函式
  10.         /// </summary> 
  11.         public ExceptioinManage() { }
  12.  
  13.         public ExceptioinManage(string message)
  14.             : base(message) 
  15.         {
  16.             throw new Exception(message);
  17.         }
  18.  
  19.         public ExceptioinManage(string message, Exception inner)
  20.             : base(message, inner) { }
  21.  
  22.         public ExceptioinManage(System.Runtime.Serialization.SerializationInfo info,
  23.             System.Runtime.Serialization.StreamingContext context)
  24.             : base(info, context) { }
  25.  
  26.         public ExceptioinManage(Exception ex)         
  27.         {
  28.             if (ex.GetType() == typeof(System.Data.SqlClient.SqlException))
  29.             {
  30.                 //日誌
  31.                 throw new Exception(“串連已斷開,請檢查網路的聯通性!”);
  32.             }
  33.        if (ex.GetType() == typeof(System.IO.IOExcetion))      {            //日誌           throw new Exception("無法讀取檔案!");      }
          //其它異常
  34.             //日誌(http://www.uol123.com)

  35.             throw ex;//預設異常
  36.         }
  37.     }
這樣,我們只需要把我們的   throw new Excetion(ex)   改為  throw new ExceptioinManage(ex) 就可以拋出人性化的異常了! 固定連結: c#自訂異常處理(二) | 資料庫之家 +複製連結
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.