Enterprise Library 2.0 中的 Exception Handing Applcation Block 为我们开发人员以及设计人员提供了一个一致的方法去处理我们整个企业级应用程序的每个层次上的异常,表现在以下几个方面:
1、它为应用程序的架构的每个层提供异常处理方法,并不仅仅局限于服务层接口;
2、提供通用的异常处理方法,比如记录异常信息,使用我们自定义的异常信息来替换系统的异常信息等等;
3、我们可以自己定义异常处理的规则,并且可以不通过修改代码来修改异常处理的规则;
4、它支持我们开发者自己创建自己的异常处理方法;
5、通过同样的方法来调用异常处理方法,这使得异常处理可以用于应用程序的任何地方。
我们在进行异常处理时,一般采用一下策略:
1、包装
2、替换
3、日志
那么,Exception Handing Application Block 究竟能给我们得开发带来哪些好处呢?先看下面的代码:
DataSet customersDataSet;
try
{
customersDataSet = RunQuery("GetAllCustomers");
}
catch(Exception ex)
{
string formattedInfo = FormatException(ex);
Logging.Log(formattedInfo);
throw new DataAccessException("Database access failure for query GetAllCustomers",e);
}
上面的代码估计我们最熟悉不过了,不错,在我们的应用程序中这样的代码估计会贯穿我们的程序中的每一个角落,但是当我们处理异常的方法发生改变了的时候,我们就要对所有的代码进行修改,这是一件很郁闷的事情,Exception Handing Application Block的出现就为我们解决了这样的麻烦,使用Exception Handing Application Block后,我们只需要修改配置文件就可以改变应用程序中的所有异常处理方法。如下:
DataSet customersDataSet;
try
{
customersDataSet = RunQuery("GetAllCustomers");
}
catch(Exception ex)
{
bool rethrow = ExceptionPolicy.HandleException(ex, "Data Access Policy");
if (rethrow)
throw;
}