五、客户端接收组件的错误信息
1、如果使用 API 方式调用组件,接收错误的方法是:
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 函数取得其它信息 }