擊鼓傳花——輪詢式錯誤處理機制的設計與實現(一)
--------------------------------------------------------------------------------
摘要
本文簡單介紹了一種輪詢式錯誤處理機制的設計思想與具體實現,本機制可以靈活地實現對錯誤處理方式的擴充,以及對錯誤信息格式的自定義。
--------------------------------------------------------------------------------
目錄
簡介 類圖 類的說明與代碼實現 客戶端調用方式 總結 更多的信息
--------------------------------------------------------------------------------
簡介
錯誤處理是每個應用軟件都需要包含的固定模塊。如何來設計一種具有普遍適用性的錯誤處理機制,是本文討論的核心。 本文就此介紹了一種采用輪詢的方式,使用戶可多選擇地使用已定義或者由用戶自定義的方式來進行錯誤處理,同時允許用戶對錯誤信息輸出格式進行定制和擴展。
--------------------------------------------------------------------------------
類圖
--------------------------------------------------------------------------------
類的說明與代碼實現
Global:
該類用于登記錯誤處理方式以及定義其標志值,另外有一個全局靜態方法NumberSplit,將傳入參數int x轉化為二進制格式的string輸出。具體代碼如下:
public class Global
{
//錯誤處理方式計數
public const int ERROR_HANDLE_MODE = 5;
//每種錯誤處理方式的標志值
public const int None = 0;
public const int DebugInfo = 1;
public const int EventLog = 2;
public const int MessageBox = 4;
public const int LogFile = 8;
public const int Mail = 16;
//public const int ShortMessage = 32;
//public const int Print = 64;
//public const int MessageQueue = 128;
//public const int Database = 256;
//public const int Console = 512;
public Global()
{
//
// TODO: Add constructor logic here
//
}
public static string NumberSplit(int x)
{
string r = "";
while(x!=0)
{
int t = x%2;
r = t.ToString() + r;
x = x/2;
}
return r;
}
}
ErrorMsgClass:
該類為錯誤信息包含類,任何一個錯誤對象都作為該類的一個實例存在,該類的實例也作為錯誤信息的載體貫穿于整個錯誤處理體系中。該類只有一個哈希類型的參數,用于存放具體的錯誤信息。該類實例化的時候自動將錯誤處理方式設為0(不處理)。具體代碼如下:
public class ErrorMsgClass
{
public Hashtable hash= new Hashtable();
public ErrorMsgClass()
{
//
//錯誤處理方式默認為不處理
hash.Add("Mode",0);
//
}
}
|