Microsoft Enterprise Library 5.0 系列(七) Exception Handling Application Block
来源:互联网 发布:家电网络款和实体店款 编辑:程序博客网 时间:2024/05/17 00:08
使用企业库异常处理应用程序模块的优势:
- 它支持整个应用程序体系结构层的异常处理,而不仅限于服务接口的界限。
- 它使得异常处理策略可以在管理层定义和维护,以便决策人员(可能是系统管理员和开发人员)可以定义如何处理异常。他们可以维护和修改控制异常处理的规则集,而无需更改块的应用程序代码。
- 它提供了常用的异常处理功能,例如记录异常信息的功能、通过将原始异常替 换为其他异常来隐藏敏感信息的功能,以及通过将原始异常打包到另一个异常中来添加异常的上下文信息的功能。这些功能封装在名为 Exception handlers 的 .NET 类中。
- 它可以合并多个异常处理程序以产生某个异常所需的响应,例如先记录异常信 息,再将原始异常替换为其他异常。
- 它使开发人员能够创建自己的异常处理程序。
- 它以一致的方式调用异常处理程序。这意味着,处理程序可以在应用程序之中 和之间的多种场合下使用。
下面我们来试试看用EL5.0的异常处理模块到底能做些什么,按需求来做分析是最好的办法,那我们可以模拟的提出下列几个需求,看看用异常处理模块如何灵活的解决它们:
1. 希望能过滤程序中某些异常,即在发生这些异常的时候不会被抛出.要求是配置简单,只用修改一处地方就能控制所有相应的异常.
2. 发生某种异常的时候被自动替换成另外一个异常
3. 发生某种异常的时候被自动包装到另外一个异常中
4. 发生某种异常的时候被自动记录在指定的日志记录策略中,可以是记录到数据库或者文件中.
下面介绍如何使用Microsoft Enterprise Library 5.0中的异常处理程序模块来处理上面的问题:
1. 运行EntLibConfig.exe, 选择Blocks菜单 ,单击 Add ExceptionHandling 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 Handlers—AddReplace 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—AddWrap Handler,在建立好的Wrap Handler面板中点击Wrap Exception Type右边的…按钮,选择要替换成的异常类型,我们选择: System.ApplicationException:
9. Save一下,更新App.config文件,修改源程序如下:
10. 运行结果:
到此为止,我们又解决了第三个问题.
11. 接着处理第四个问题,回到EL, 在Policy面板上右键—Add Exception Type,在弹出的异常类型选择窗口中,我们选择一个异常System. NullReferenceException,再在NullReferenceException面板上右键—Add Handlers—AddLogging Exception Handler,将日志策略设置为文件记录方式,详细步骤在此不多讲,大家可以看看我之前写的日志处理模块教程:
12. Save一下,更新App.config文件,修改源程序如下:
13. 运行结果:
打开工程目录下的rolling.log文件:
OK,到此为止,我们将四个问题都解决了.
测试程序可以点击这里下载\(^ ^ \)
出处:http://www.cnblogs.com/huangcong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
- Microsoft Enterprise Library 5.0 系列(七) Exception Handling Application Block
- Microsoft Enterprise Library 5.0 系列(七) Exception Handling Application Block
- Microsoft Enterprise Library 5.0 系列教程(七) Exception Handling Application Block
- Enterprise Library: Exception Handling Application Block类设计分析
- Enterprise Library Exception Handling Application Block 学习笔记 - 1
- Enterprise Library Exception Handling Application Block 学习笔记 - 2
- Enterprise Library Exception Handling Application Block 学习笔记 - 3
- Microsoft Enterprise Library 5.0 系列(一) Caching Application Block (高级)
- Microsoft Enterprise Library 5.0 系列(一) : Caching Application Block (初级)
- Microsoft Enterprise Library 5.0 系列(一) Caching Application Block (高级)
- Microsoft Enterprise Library 5.0 系列(二) Cryptography Application Block (初级)
- Microsoft Enterprise Library 5.0 系列(二) Cryptography Application Block (高级)
- Microsoft Enterprise Library 5.0 系列(三) Validation Application Block (初级)
- Microsoft Enterprise Library 5.0 系列(三) Validation Application Block (高级)
- Microsoft Enterprise Library 5.0 系列(四) Logging Application Block
- Microsoft Enterprise Library 5.0 系列(五) Data Access Application Block
- Microsoft Enterprise Library 5.0 系列(六) Security Application Block
- Microsoft Enterprise Library 5.0 系列(九) Policy Injection Application Block
- 邂逅-------秋天的童话
- 学车笔记
- Microsoft Enterprise Library 5.0 系列(六) Security Application Block
- Android 系统 目录 分析
- C++拷贝构造函数(深拷贝,浅拷贝)
- Microsoft Enterprise Library 5.0 系列(七) Exception Handling Application Block
- Quick Sort
- android中事件的处理
- PowerVR 6系列GPU发布 可完全兼容DX11.1
- Microsoft Enterprise Library 5.0 系列(八) Unity Dependency Injection and Interception
- 测试一段iOS代码运行时间的两种方法
- Qt安装—搭建VS2008+QT开发环境
- 七夕从期待变成陌生
- android待机详细结合代码分析(一)