65.9K
CodeProject 正在变化。 阅读更多。
Home

使用企业应用程序块进行异常处理

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.46/5 (27投票s)

2008年10月21日

CPOL

5分钟阅读

viewsIcon

99973

使用企业应用程序块进行异常处理

已更新其他应用程序块的链接

引言

异常处理是任何应用程序中最重要的任务之一。许多应用程序要么不处理异常,要么以临时的方式处理。在本节中,我们将了解如何使用现成的异常处理块,这样我们就无需从头开始编写和构建错误处理例程。

其他应用程序块

验证应用程序块:- 本文介绍了使用 VAB 进行验证所需的 16 个步骤。验证应用程序块

客户端验证:- VAB 的一个缺点是它只进行服务器端验证。本文介绍了如何利用 VAB 进行客户端验证。客户端验证

动态验证:- 本文介绍了如何基于场景构建动态验证。动态验证

策略应用程序块:- 本文介绍了如何使用策略应用程序块实现即插即用机制。策略应用程序块

日志记录应用程序块:- 本文介绍了使用日志记录应用程序块的 5 个基本步骤。
日志记录应用程序块

数据应用程序:- 本文介绍了实现数据应用程序块所需的四个步骤。
数据应用程序块

Unity 应用程序块:- 本文讨论了 Unity 应用程序块在 DI 和 IOC 中的应用。Unity 应用程序块

UIP 块:- 本文介绍了如何使用 Microsoft UIP 块在 Windows 和 Web 应用程序中实现可重用的导航和工作流。UIP 块

问题

良好的错误处理具有以下特点

  • 您希望将错误记录到事件查看器、文件等来源,以便进一步调试和检查。
  • 您还希望在不重新编译项目的情况下动态更改这些错误日志记录源。因此,有时您希望将错误记录到事件查看器,有时您希望在发生一些关键错误时向管理员发送电子邮件。
  • 您还希望根据错误发生的地点应用不同的错误策略。例如,如果错误发生在 UI 上,您希望在标签上抛出错误;如果错误发生在数据访问层,您希望记录该错误。对于某些错误,您希望用自定义异常替换它。
  • 最后,您希望在不重新编译代码的情况下,根据情况动态添加、更新和删除这些错误策略。

那么问题是什么?如果我们想从头开始构建上述功能,这本身就是一个项目。

解决方案

上述问题的答案是使用现成的异常处理块。

第一步:- 我们需要做的第一件事是添加日志记录应用程序块。如果您还没有阅读过日志记录应用程序块,请阅读 Questpond1.aspx。正如我们之前提到的,错误处理的一个重要方面是,我们应该能够将错误记录到某个来源。日志记录应用程序块提供了这种能力。

第二步:- 现在我们已经定义了错误应该在哪里被记录,是时候定义异常策略了。因此,右键单击并添加异常处理应用程序块,然后右键单击异常处理块以添加异常策略,如下所示。

我们将为这个策略命名为“Policy1”。

第三步:- 现在右键单击 Policy 1 并定义一个新的异常类型,如下所示。

对于当前场景,选择异常类型为通用的 .NET 异常,如下所示。此类型指定策略将捕获此类异常。

第四步:- 如果发生此异常,我们需要指示异常块应该做什么。对于策略异常,我们希望将其记录到日志记录器中。因此,单击 Policy 1 中定义的异常,并说明需要使用日志记录处理程序进行记录。

为日志记录处理程序指定日志记录源,如下所示。

选择格式化程序类型,如下所示。

第五步:- 让我们使这个例子更有趣,以发挥异常处理块的真正本质。让我们再添加一个名为 Policy 2 的策略。在 Policy 2 中,我们将捕获算术异常。这个算术异常将被替换为通用异常。

要定义通用异常,请右键单击算术异常并定义替换异常类型为 Exception。

下方的图显示了我们如何定义通用异常作为替换异常类型以及新的异常消息。

Click to enlarge

因此,我们定义了两个策略:一个策略(Policy1)将捕获异常并将其记录到事件查看器中,另一个策略将捕获算术异常并将其替换为通用异常并抛给调用者。

第六步:- 现在最后一步是在代码中调用异常策略。所以首先在代码中导入命名空间,即 exceptionhandling 和 logging。

最后,使用 exceptionpolicy static 类来处理异常。您可以在下图中看到,我们有两个按钮,一个使用 policy1 ,另一个使用 policy2

Click to enlarge

policy1 的输出将记录到事件查看器中,如下所示。

policy2 的输出将被替换为通用错误,如下所示。

异常处理块最好的部分是,您可以在不重新编译代码的情况下动态更改策略。您还可以将错误日志记录源从事件查看器更改为文件或电子邮件。我希望您喜欢这篇文章,我敢肯定,如果您能正确使用这个块,您将能够拥有一个非常稳定、高效和灵活的错误处理框架。

如需进一步阅读,请观看以下面试准备视频和分步视频系列。

© . All rights reserved.