EMAB的作用就是异常的自动记录。为了达到这一功能,EMAB包含了很多特性,比如:
EMAB提供了记录程序中异常的兼容性很好的方法。事实上,它的主要意义是使很多普通的任务自动操作,并帮助程序中的操作标准化。除了EMAB,微软还建立了一个数据库访问程序块。
EMAB其中一个与众不同之处是微软把它集成在包括VB.NET和C#的Visual Studio .NET中,所以你可以随意地访问源代码(本文章采用的是VB.NET版本)。EMAB中,微软没有将代码编译,所以你必须先将代码进行编译。
下载EMAB之后,运行MSI文件以安装程序块,然后打开项目。如果你使用的是Visual Studio .NET 2003,你将会收到一则关于项目更新的消息。但是,在VS.NET 2003中EMAB运行得比较好。
建立方法之后,下面一步就是建立一个新的VB.NET窗口程序并将它命为EmabTest。通过在方法浏览窗口中的相关节点上点击右键来设置EMAB的引用。在.NET标签中,点击浏览按钮并查看包含安装DLL的目录。缺省的安装路径为:
C:Program FilesMicrosoft Application Blocks for .NETException
ManagementCodeVB
Microsoft.ApplicationBlocks.ExceptionManagementin
Microsoft.ApplicationBlocks.ExceptionManagement.dll.
在窗体中添加一个按钮并查看代码窗口。接着,添加以下的输入口命令到代码窗口的顶端:
Imports Microsoft.ApplicationBlocks.ExceptionManagement
现在,在Button1_Click sub中添加如下的代码:
Dim x, y As Integer
Try
x = 5 / y
Catch ex As Exception
ExceptionManager.Publish(ex)
End Try
这些代码说明使用EMAB可以提高程序的简单性。代码中,5将0整数,VB.NET在缺省情况下为0,代码即生成了一个OverFlowException异常,因为它使用的是标准的分隔符(/)。当代码生成一个异常,就运行catch块,然后就记录异常错误到程序的日志文件。
运行这一程序并点击按钮。打开事件查看器并检查程序的日志文件。正如你在图A中可以看到的,由于溢出异常,一个入口点已经被添加。日志入口包含很多有用的信息。图A显示了异常信息的起始。
图 A
关于代码请注意两点。第一,ExceptionManager对象中的publish方法在没有启动对象的情况下就被调用。Publish方法能够被调用是因为它在程序处于被共享的状态。第二,错误可以自动在事件日志中得到记录。EMAB用缺省的出版位置,但你也可以编写自定义的出版人。自定义的出版人允许你编写一个文本文件,记录到一个数据库,发送一个e-mail,或者其他。