接收组件的错误信息

1、如果使用 API 方式调用组件,接收错误的方法是:

HRESULT hr = spXXX->fun()  // 调用组件功能 
if( FAILED( hr ) )  // 如果发生了错误 
{ 
  CComQIPtr < ISupportErrorInfo > spSEI = spXXX;  // 组件是否提供了 ISupportErrorInfo 接口? 
  if( spSEI )  // 如果支持,那么 
  { 
    hr = spSEI->InterfaceSupportsErrorInfo( IID_Ixxx );  // 是否支持 Ixxx 接口的错误处理? 
    if( SUCCEEDED( hr ) ) 
    {  // 支持,太好了。取出错误信息 
      CComQIPtr < IErrorInfo > spErrInfo;    // 声明 IErrorInfo 接口 
      hr = ::GetErrorInfo( 0, &spErrInfo );  // 取得接口 
      if( SUCCEEDED( hr ) ) 
      { 
        CComBSTR bstrDes; 
        spErrInfo->GetDescription( &bstrDes );  // 取得错误描述 
        ......  // 还可以取得其它的信息 
      } 
    } 
  } 
}


2、如果使用 #import 等包装方式调用组件,接收错误的方法是:

try 
{ 
  ......  // 调用组件功能 
} 
catch( _com_error &e ) 
{ 
  e.Description();  // 取得错误描述信息 
  ......  // 还可以调用 _com_error 函数取得其它信息 
    mscorlib::_ExceptionPtr ptrEx = e.ErrorInfo();
    CString innerMessage = e.ErrorMessage();
    if (ptrEx != NULL)
        innerMessage.Format(ptrEx->GetMessage());    
    MessageBox(NULL, innerMessage, _T("Warning"), MB_OK);}
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值