• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

从 COM 客户端获得连续的 .NET 异常日志记录并且无需修改代码

发布: 2008-5-14 09:43 | 作者: 不详 | 来源: ccid | 查看: 208次 | 进入软件测试论坛讨论

领测软件测试网



重载的 Publish 方法被调用,它不仅采用异常对象,而且还采用一个名-值项集合(这些项可以在发布异常时指定其他重要数据)。ManagedExceptionLoggerTask 辅助线程使用该方法来添加异常引发的日期和时间。

ExceptionPublisher 类还利用了其他一些最佳技术。这包括对类和接口使用显式 GUID,以及从自定义接口派生而不是使用默认的类接口。有关这些技术的详细信息,请参阅 .NET and COM: The Complete Interoperability Guide。通过提供默认构造函数和一个用于发布异常的公共非静态方法,我已经创建了一种容易的方式,以便 COM 客户端使用我的类来发布异常: 

IExceptionPublisherPtr spExceptionPublisher(__uuidof(ExceptionPublisher));
spExceptionPublisher->Publish(spException, spNameValueItems);

返回页首
回退日志记录


如果无法使用异常块发布 .NET 异常(由于诸如无法创建对象或权限不足等原因),则应当尝试直接记录到事件日志中。如果这种办法也失败,则最后一个办法是将异常写到调试窗口中。有趣的是,如果 ExceptionPublisher 的 Publish 方法失败,则必须将两个异常记录到事件日志中。第一个异常是从 Publish 方法中引发的 .NET 异常(它包含有关 Publish 方法失败原因的信息),第二个异常是被记录的实际异常。

第一个异常实际上可以使用本文开头介绍的、Adam Nathan 的技术提取,因为这里使用了早绑定 COM 客户端来调用 .NET 组件。.NET 异常是通过查询 _Exception 接口直接从错误对象中提取的。

异常信息被在 CManagedExceptionLoggerTask::LogExceptionToEventLog 方法中添加到事件日志中。该方法的工作方式类似于 Publish 方法,即提取所有内层异常并且为每个异常写出堆栈跟踪。如果在记录到事件日志的过程中发生任何错误,则会将原因和异常信息写到调试窗口中。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网