日期:2008-05-23  浏览次数:20451 次

击鼓传花——轮询式错误处理机制的设计与实现(一)


--------------------------------------------------------------------------------


摘要

本文简单介绍了一种轮询式错误处理机制的设计思想与具体实现,本机制可以灵活地实现对错误处理方式的扩充,以及对错误信息格式的自定义。


--------------------------------------------------------------------------------

目录

简介
类图
类的说明与代码实现
客户端调用方式
总结
更多的信息

--------------------------------------------------------------------------------

简介

错误处理是每个应用软件都需要包含的固定模块。如何来设计一种具有普遍适用性的错误处理机制,是本文讨论的核心。 本文就此介绍了一种采用轮询的方式,使用户可多选择地使用已定义或者由用户自定义的方式来进行错误处理,同时允许用户对错误信息输出格式进行定制和扩展。


--------------------------------------------------------------------------------

类图














--------------------------------------------------------------------------------

类的说明与代码实现

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);