首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > .NET > C#.NET > .NET Interop: 从IErrorInfo错误对象获得托管代码的异常信息
【标  题】:.NET Interop: 从IErrorInfo错误对象获得托管代码的异常信息
【关键字】:.NET,Interop,IErrorInfo
【来  源】:http://blog.csdn.net/ATField/archive/2007/04/18/1569701.aspx

.NET Interop: 从IErrorInfo错误对象获得托管代码的异常信息

当调用IDispatch::Invoke函数的时候,当函数调用过程中抛出了异常,Invoke函数会返回DISP_E_EXCEPTION,代表异常发生。Invoke函数的pExceptionInfo参数可以提供关于异常的有关信息:

IDispatch *pDisp;

EXCEPINFO excepInfo;

HRESULT hr = pDisp->Invoke(…, &excepInfo);

 

if( hr == DISP_E_EXCEPTION )

{

      // 使用excepInfo获得异常信息

}

 

pDisp指向一个托管对象(Managed Object)的时候,excepInfo并不能提供足够的信息。这个时候我们可以使用IErrorInfo_Exception接口来获得托管的异常信息。_Exceptionmscorlib.dll提供的对托管异常的支持的接口(mscorlib.dll同时还有大量的接口可以供Interop的时候使用),可以通过#import来导入mscorlib.dll中的COM接口:

// 导入.NET Framework 2.0版本中的mscorlib.dllType Library

#import "C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.tlb" no_namespace named_guids raw_interfaces_only

 

之后,当Invoke返回DISP_E_EXCEPTION的时候,调用::GetErrorInfo函数获得IErrorInfo对象:

IDispatch *pDisp;

EXCEPINFO excepInfo;

HRESULT hr = pDisp->Invoke(…, &excepInfo);

 

if( hr == DISP_E_EXCEPTION )

{

      IErrorInfoPtr pErrorInfo;

      :GetErrorInfo(0, &pErrorInfo);

IErrorInfo所指向的错误对象当抛出托管异常的时候,将会支持_Exception接口,这个接口可以通过一个QueryInterface获得。通过智能指针,只需简单做一个赋值即可。

      // 获得错误对象的_Exception接口
      _ExceptionPtr pException = pErrorInfo;

之后,便可以使用_Exception接口所支持的各种方法来获得托管异常的有关信息了,比如:

      // _Exception转换成字符串,用于显示

      _bstr_t bstrString;
      pException->get_ToString(bstrString.GetAddress()
);

}

 

 

作者:      ATField
Blog:     
http://blog.csdn.net/atfield
转载请注明出处

 
通用对话框:【上一篇】
《给初学者的Windows Vista的补遗手册》之079:【下一篇】
【相关文章】
  • 使用easyobjects asp.net ajax + mygeneration(2) easyobjects概述
  • 上海.NET俱乐部 – 微软社区巡展VSTS上海专场活动
  • 为 ADO 程序员设计的 ADO.NET (转)
  • .NET 数据访问架构指南
  • ADO和ADO.NET的区别
  • 一个简单的基于System.Web.Mail的ASP.Net邮件发送程序
  • asp.net 1.1sp1 / 2.0 安装手册
  • 使用 Web 标准生成 ASP.NET 2.0 Web 站点
  • ASP.NET 2.0中实现模板中的数据绑定
  • 深入ASP.NET 2.0的提供者模型
  • 【随机文章】
  • Maya 4.0 常用功能-层的运用
  • IT开发人才
  • [功能改进]支持在FireFox下插入代码
  • 节点管理器
  • Calendar Web 控件
  • 数据库监控脚本(三)
  • file.src.rpm 使用方法的简单介绍
  • linux 命令大全
  • PHP+MYSQL留言本(一)
  • Flash MX基础应用(1.7)
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.