技术开发 频道

Enterprise Library 2.0:异常应用程序块(一)

【IT168技术文档】

练习1 记录异常信息
通过本练习,将会在一个没有异常处理的应用程序中使用异常处理应用程序块添加本地和全局的异常处理,并记录到Windows事件日志中。


第一步
打开Puzzler.sln 项目,默认的安装路径应该为C:\Program Files\Microsoft Enterprise Library January 2006\labs\cs\Exception Handling\exercises\ex01,并编译。


第二步 回顾应用程序

选择Debug | Start Debugging菜单命令运行应用程序,当前应用程序并没有出现异常信息。当尝试增加一个带有数字的单词(在文本框中输入“abc123”并单击Add Word按钮)到目录中时,将会出现一个未处理的异常,调试将会中断。
选择Debug | Stop Debugging菜单命令退出应用程序并返回Visual Studio

第三步 增加Try/Catch异常处理
1.选择PuzzlerUI项目,并选择Project | Add Reference …菜单命令,选择Browse项并添加如下程序集。Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.dll

默认的安装位置为C:\Program Files\Microsoft Enterprise Library January 2006\bin
2.在解决方案管理器中选择Puzzler.cs文件,并选择View | Code菜单命令,添加如下命名空间。

using Microsoft.Practices.EnterpriseLibrary.ExceptionHandling;
3.在btnAddWord_Click方法中添加如下代码,在调用AddWord SetError时添加try/catch区。
private void btnAddWord_Click(object sender, System.EventArgs e){ try{ // TODO: Handle exceptions PuzzlerService.Dictionary.AddWord(txtWordToCheck.Text); errorProvider1.SetError(txtWordToCheck, ""); } catch (Exception ex){ bool rethrow = ExceptionPolicy.HandleException(ex, "UI Policy"); if (rethrow) throw; MessageBox.Show(string.Format( "Failed to add word {0}, please contact support.", txtWordToCheck.Text)); } }

注意这里使用throw语句非常重要,而不能使用throw ex。如果使用throw ex将在重新抛出异常点对异常信息重新进行包装,这样达不到预期的效果。

第四步 企业库配置工具
1.在项目PuzzlerUI中添加一个新的应用程序配置文件(App.config)。单击PuzzlerUI项目,选择Project| Add New Item…菜单命令,然后选择Application configuration file模版,保留App.config名字。

2.使用Enterprise Library配置工具配置应用程序,可以通过开始菜单打开该配置工具,选择所有程序| Microsoft patterns and practices | Enterprise Library | Enterprise Library Configuration,并打开App.config文件。或者直接在Visual Studio中使用该工具打开配置文件。
3.在解决方案管理器中选中App.config文件,在View菜单或者在右键菜单中选择Open With…,将打开OpenWith对话框,单击Add按钮。 


4.在Add Program对话框中,设置Program name指向EntLibConfig.exe文件,默认的路径为C:\Program Files\Microsoft Enterprise Library January 2006\bin,设置Friendly nameEnterprise Library Configuration,单击OK按钮。

Visual Studio会把配置文件(App.config)作为一个命令行参数传递给EntLibConfig.exe
5.在Open With对话框中,选中Enterprise Library Configuration并单击OK按钮。

0
相关文章