EnterLib5.0 Hands-on异常处理
看企业库方面的资料有一段时间了,从这一篇开始,打算将EnterLib5.0 Hands-on上的例子,结合我的实践与理解介绍一个系列的关于企业库基本的用法。EnterLib5.0 Hands-on上都是一些牛人做的一些DEMO,大家有兴趣可以自己下载下来看看。有一些是我翻译过来的,可能不太准确。我使用的是5.0的版本。VS的版本是2008 SP1。
从我看的第一篇异常处理说起。要是有些理解偏差还希望高手指出。
例子说明:检查输入的字符、如果带有数字那么程序将抛出异常。
在本例中,需要添加应用的程序集有以下几个:
1、Microsoft.Practices.EnterpriseLibrary.Common.dll
2、Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.dll
3、Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.dll
4、Microsoft.Practices.EnterpriseLibrary.ServiceLocation.dll
尽管只有ExceptionHandling程序集是异常处理的API,其他的程序集也是需要在Bin\Debug目录下的,他们为程序的异常处理提供了其他的功能。
检查添加单词的按钮的事件里面的代码如下:
1 try
2 {
3 // TODO: Handle exceptions
4 PuzzlerService.Dictionary.AddWord(txtWordToCheck.Text);
5 errorProvider1.SetError(txtWordToCheck, "");
6 }
7 catch (Exception ex)
8 {
9 bool exceptionResult = ExceptionPolicy.HandleException(ex, "UI Policy");
10 if (exceptionResult)
11 {
12 throw;
13 }
14 MessageBox.Show(string.Format("Failed to add word {0}, please contact support.", txtWordToCheck.Text));
15 }
注意:抛出异常的方式是非常重要的,而不是throw ex。如果你“throw ex”,堆栈异常将会被一个重新抛出异常点的堆栈跟踪所替换,通常这不是希望看到的效果
下面介绍使用企业库的配置工具对配置文件进行配置的过程。
1、右击App.config文件。选择"Edit Enterprise Library V5 Configuration"。如下图:
2、给程序配置异常管理.如下图:
3、为默认的策略点击名称栏坐标的箭头,这样配置工具会自动创建显示策略的属性。将属性的名字改为:"UI Policy"。注意:这里的名字就是以上在try{} catch{}块中的HandleException处理的名字参数。如下图:
4、现在添加异常处理的策略。右击标题栏项"All Exceptions",点击"Add Handlers",在上下文菜单中点击"Add Logging Exception Handler"。如下如:
5、这样,就会在配置文件中自动为异常处理配置异常的日志处理配置节,用默认的配置为日志应用块添加"Logging Settings"配置节。右击点”Logging Exception Handler“标题栏左侧的箭头显示处理的属性。默认的:处理将会使用文本异常格式【Text Exception Formatter】,并记录下日志信息到指定的目录下。如下是【General】目录。如下图:
6、保存并关闭应用程序配置。
至此,异常的基本配置就完成了。接下来运行程序:
1、输入一个带数字的字符串,然后点击”Add Word“按钮。运行结果如下图:
2、通过事件查看器查看日志。【计算机管理--事件查看器--Windows日志--应用程序】。如下图:
点击其中一条错误日志,查看异常的详细信息。错误信息如下图:
以上是企业库的基本日常处理,当然它还包括安全等等方面的信息,待下节再介绍。