通用异常处理框架
作者:网络转载 发布时间:[ 2014/7/23 14:02:10 ] 推荐标签:单元测试
图三-4
ExManagement包
包含了ExManager类和ErrorInfo类,是框架中核心的业务流程控制模块。如图三-5
图三-5
ErrorInfo类:根据ErrorId查询对应的ErrorString。在这个类里,会根据在配置文件中节的值去指定的数据源(XML文件或者数据库)查询。
ExManager类,该类是一个单例类,会在第一次实例化时获取配置信息实体对象,并按照配置文件把所有指定的异常处理类实例化后并存入一个哈希表中。以后实例化该类都会重复使用之前实例化的该对象,避免反射造成的性能影响。通过调用该类的ProcessException()方法将捕捉到的异常对象,错误编号,用来处理异常的异常处理器名(建议为该层的名称)传递给框架,并按照参数从哈希表中取出对应的异常处理对象,调用接口对异常进行处理。
ExManagement.Handler包
只包含一个默认的异常处理器类:DefaultExHandler,它从ExHandlerBase基类继承。下面是该类里重要的ProcessExeception方法。
public override string ProcessExeception(Exception ex, string strUserId, string strErrorCode)
{
// 记录异常信息
LogEx(ex, strUserId, strErrorCode);
switch(m_ExHandlerConfig.ReturnMode)
{
// 返回类型为错误编码
case ExManagement.ExReturnMode.ErrorCode:
{
return strErrorCode;
}
// 返回类型为详细错误信息(友好提示)
case ExManagement.ExReturnMode.ErrorString:
{
return ExManagement.ExManager.GetErrorInfoByCode(strErrorCode);
}
// 返回类型为详细异常信息(Exception.Message)
case ExManagement.ExReturnMode.ExceptionString:
{
return ex.Message;
}
// 将异常向上抛出
case ExManagement.ExReturnMode.Exception:
{
// 如果是该层自身引发的异常则包装后抛出
if(ex.GetBaseException() == ex)
{
throw new Exception(string.Format("{0}层发生异常:{1},{2}",
m_ExHandlerConfig.Name, strErrorCode, ex.Message), ex);
}
// 若是捕捉到的是包装后的异常(即上层抛出的)
else
{
throw ex;
}
}
default:
{
return null;
}
}
}
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11