Welcome 微信登录

首页 / 网页编程 / ASP.NET / Enterprise Library 2.0 Hands On Lab 翻译(7):异常应用程序块(一)

Enterprise Library 2.0 Hands On Lab 翻译(7):异常应用程序块(一)2010-03-02 cnblogs TerryLee练习1: 记录异常信息

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

第一步

打开Puzzler.sln 项目,默认的安装路径应该为C:Program FilesMicrosoft Enterprise Library January 2006labscsException Handlingexercisesex01,并编译。

第二步 回顾应用程序

选择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 FilesMicrosoft Enterprise Library January 2006in。

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将在重新抛出异常点对异常信息重新进行包装,这样达不到预期的效果。