Microsoft Enterprise Library 5.0 系列教程(七) Exception Handling Application Block

简介:

使用企业库异常处理应用程序模块的优势:

  1. 它支持整个应用程序体系结构层的异常处理,而不仅限于服务接口的界限。 
  2. 它使得异常处理策略可以在管理层定义和维护,以便决策人员(可能是系统管理员和开发人员)可以定义如何处理异常。他们可以维护和修改控制异常处理的规则集,而无需更改块的应用程序代码。 
  3. 它提供了常用的异常处理功能,例如记录异常信息的功能、通过将原始异常替换为其他异常来隐藏敏感信息的功能,以及通过将原始异常打包到另一个异常中来添加异常的上下文信息的功能。这些功能封装在名为Exception handlers  .NET 类中。 
  4. 它可以合并多个异常处理程序以产生某个异常所需的响应,例如先记录异常信息,再将原始异常替换为其他异常。 
  5. 它使开发人员能够创建自己的异常处理程序。 
  6. 它以一致的方式调用异常处理程序。这意味着,处理程序可以在应用程序之中和之间的多种场合下使用。 

 

下面我们来试试看用EL5.0的异常处理模块到底能做些什么,按需求来做分析是最好的办法,那我们可以模拟的提出下列几个需求,看看用异常处理模块如何灵活的解决它们:

1.       希望能过滤程序中某些异常,即在发生这些异常的时候不会被抛出.要求是配置简单,只用修改一处地方就能控制所有相应的异常.

2.       发生某种异常的时候被自动替换成另外一个异常

3.       发生某种异常的时候被自动包装到另外一个异常中

4.       发生某种异常的时候被自动记录在指定的日志记录策略中,可以是记录到数据库或者文件中.

 

下面介绍如何使用Microsoft Enterprise Library 5.0中的异常处理程序模块来处理上面的问题:

1.      运行EntLibConfig.exe, 选择Blocks菜单 ,单击 Add Exception Handling Settings . 


 

 

2.      为了模拟第一个问题,我们要先删除原有的All Exceptions,因为它表示所有的异常均截取,我们删除了它,再在Policy面板上右键—Add Exception Type,在弹出的异常类型选择窗口中,我们选择一个异常System.FormatException:


 

 

 

3.       点击 File菜单,单击 Save,保存为一个App.config文件,可以先保存到桌面,之后要用到它.

 

4.       创建一个新的控制台应用程序,App.config添加到程序内,并加入需要的Dll文件,并添加需要的引用:

 

添加引用:

using Microsoft.Practices.EnterpriseLibrary.ExceptionHandling;
using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;
using Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Configuration;
    测试 :
代码
 

 

运行结果:


 

 

到此为止,我们已经解决了第一个问题,当你的程序想只过滤System.FormatException异常的时候,可以用上面的方法实现,如果想过滤其他的异常,只用在EL5中添加即可,无需更改程序中的任何代码.

 

5.       下面我们来解决第二个问题,让我们回到EL5.0,Policy面板上右键Add Exception Type,在弹出的异常类型选择窗口中,我们选择一个异常System.IO.FileNotFoundException,再在FileNotFoundException面板上右键Add HandlersAdd Replace Handler,在建立好的Replace Handler面板中点击Replace Exception Type右边的按钮,选择要替换成的异常类型,我们选择:System.TimeputException: 


 

 

6.       Save一下,更新App.config文件,修改源程序如下:

代码

 

7.       运行结果:


 

到此为止我们便解决了第二个问题,是不是很简单呀,这就是EL的便利之处~

 

8.       接着处理第三个问题,回到EL,Policy面板上右键—Add Exception Type,在弹出的异常类型选择窗口中,我们选择一个异常System. NullReferenceException,再在NullReferenceException面板上右键—Add Handlers—Add Wrap Handler,在建立好的Wrap Handler面板中点击Wrap Exception Type右边的按钮,选择要替换成的异常类型,我们选择: System.ApplicationException: 

 

9.       Save一下,更新App.config文件,修改源程序如下:

 

代码
 

 

10.   运行结果:


 

 到此为止,我们又解决了第三个问题.

 

11.   接着处理第四个问题,回到EL,Policy面板上右键—Add Exception Type,在弹出的异常类型选择窗口中,我们选择一个异常System. NullReferenceException,再在NullReferenceException面板上右键—Add Handlers—Add Logging Exception Handler,将日志策略设置为文件记录方式,详细步骤在此不多讲,大家可以看看我之前写的日志处理模块教程: 


 

 

12.   Save一下,更新App.config文件,修改源程序如下:

 

代码
 

 

13.   运行结果:


 

 

打开工程目录下的rolling.log文件:


 

OK,到此为止,我们将四个问题都解决了.

 

 




本文转自黄聪博客园博客,原文链接:http://www.cnblogs.com/huangcong/archive/2010/06/04/1751087.html如需转载请自行联系原作者

相关文章
|
安全 API 网络安全
​邮箱OTP认证验证API发送邮件接口
**摘要 (Markdown格式):** OTP认证增强在线服务安全,尤其适用于邮箱验证。AOKSend提供邮箱OTP验证API,实现安全的邮件发送和用户身份验证。关键优势包括提高安全性、简化用户体验、实时发送、可扩展性和多层安全。配置涉及生成API密钥、设置SMTP、实现OTP逻辑、发送邮件及验证。AOKSend的分析工具帮助优化策略,适合各规模企业。
|
算法
多策略协同改进的阿基米德优化算法及其应用(Matlab代码实现)
多策略协同改进的阿基米德优化算法及其应用(Matlab代码实现)
387 0
|
机器学习/深度学习 算法 Java
嵌入式 CPU 平台部署
现今的物联网技术正经历着日新月异的发展,物联智能的概念已经深入人心,人们的工作、学习和娱乐都离不开与物联智能设备的交互,而物联设备的基础是嵌入式技术。
353 0
嵌入式 CPU 平台部署
|
2天前
|
人工智能 运维 安全
|
5天前
|
SpringCloudAlibaba 负载均衡 Dubbo
微服务架构下Feign和Dubbo的性能大比拼,到底鹿死谁手?
本文对比分析了SpringCloudAlibaba框架下Feign与Dubbo的服务调用性能及差异。Feign基于HTTP协议,使用简单,适合轻量级微服务架构;Dubbo采用RPC通信,性能更优,支持丰富的服务治理功能。通过实际测试,Dubbo在调用性能、负载均衡和服务发现方面表现更出色。两者各有适用场景,可根据项目需求灵活选择。
386 124
微服务架构下Feign和Dubbo的性能大比拼,到底鹿死谁手?
|
7天前
|
人工智能 JavaScript 测试技术
Qwen3-Coder入门教程|10分钟搞定安装配置
Qwen3-Coder 挑战赛简介:无论你是编程小白还是办公达人,都能通过本教程快速上手 Qwen-Code CLI,利用 AI 轻松实现代码编写、文档处理等任务。内容涵盖 API 配置、CLI 安装及多种实用案例,助你提升效率,体验智能编码的乐趣。
704 107
|
2天前
|
算法 Python
【轴承故障诊断】一种用于轴承故障诊断的稀疏贝叶斯学习(SBL),两种群稀疏学习算法来提取故障脉冲,第一种仅利用故障脉冲的群稀疏性,第二种则利用故障脉冲的额外周期性行为(Matlab代码实现)
【轴承故障诊断】一种用于轴承故障诊断的稀疏贝叶斯学习(SBL),两种群稀疏学习算法来提取故障脉冲,第一种仅利用故障脉冲的群稀疏性,第二种则利用故障脉冲的额外周期性行为(Matlab代码实现)
225 152