在另一篇文章裡,我說了.NET異常處理機制中的自訂異常處理,今天我要說的是另外一種異常處理。
在寫處理常式異常的過程中,可能會遇到各種不同類型的異常,而已要拋出不同的人性化提示,如果統一拋出一樣的提示,就不人性化了,
我們一般的處理方法 是:
- public void Update()
- {
- try
- { }
- catch(SqlExcetion ex)
- {
- throw new excetion(ex);
- }
- catch(IOExcetion ex)
- {
- throw new excetion(ex);
- }
- //其它異常…
- catch (Exception ex)
- {
- throw new Exceptioin(ex);
- }
- }
或者採用異常嵌套(異常裡嵌套異常,這裡就不上代碼 了) 但是這種方法有一個問題,如果有多個地方要這樣處理,那我們真的成了代碼工人了。所以,用一個類來管理它吧。在這裡我們叫它,異常處理類。
- /// <summary>
- /// 全域異常處理類
- ///作者:資料庫之家(http://www.uol123.com)
- /// </summary>
- [Serializable]
- public class ExceptioinManage :Exception
- {
- /// <summary>
- /// 預設建構函式
- /// </summary>
- public ExceptioinManage() { }
-
- public ExceptioinManage(string message)
- : base(message)
- {
- throw new Exception(message);
- }
-
- public ExceptioinManage(string message, Exception inner)
- : base(message, inner) { }
-
- public ExceptioinManage(System.Runtime.Serialization.SerializationInfo info,
- System.Runtime.Serialization.StreamingContext context)
- : base(info, context) { }
-
- public ExceptioinManage(Exception ex)
- {
- if (ex.GetType() == typeof(System.Data.SqlClient.SqlException))
- {
- //日誌
- throw new Exception(“串連已斷開,請檢查網路的聯通性!”);
- }
if (ex.GetType() == typeof(System.IO.IOExcetion)) { //日誌 throw new Exception("無法讀取檔案!"); }
//其它異常
- //日誌(http://www.uol123.com)
- throw ex;//預設異常
- }
- }
這樣,我們只需要把我們的 throw new Excetion(ex) 改為 throw new ExceptioinManage(ex) 就可以拋出人性化的異常了! 固定連結: c#自訂異常處理(二) | 資料庫之家 +複製連結