错误与异常处理---组件
在组件程序中,如果遇到错误,一般有两个方式进行处理。
1. 简单返回HRESULT
对于比较简单的错误,直接返回表示错误原因的 HRESULT。
2. 抛出COM异常---调用Error(...)
既然 COM 是靠各种各样的接口来提供服务的,于是很自然地就会想到, 是否有一个接口能够提供更丰富的错误信息报告那?答案是: IErrorInfo(调用SetErrorInfo(0, pErrorInfo);)。
ATL 把SetErrorInfo包装成 CComCoClass::Error() 的6个重载函数了。
函数调用过程如下:
Error --> AtlReportError --> AtlSetErrorInfo --> SetErrorInfo(0, pErrorInfo);
在组件程序中,如果遇到错误,一般有两个方式进行处理。
1. 简单返回HRESULT
对于比较简单的错误,直接返回表示错误原因的 HRESULT。
2. 抛出COM异常---调用Error(...)
既然 COM 是靠各种各样的接口来提供服务的,于是很自然地就会想到, 是否有一个接口能够提供更丰富的错误信息报告那?答案是: IErrorInfo(调用SetErrorInfo(0, pErrorInfo);)。
ATL 把SetErrorInfo包装成 CComCoClass::Error() 的6个重载函数了。
函数调用过程如下:
Error --> AtlReportError --> AtlSetErrorInfo --> SetErrorInfo(0, pErrorInfo);