AtlThrow
调用此函数发出信号错误基于 HRESULT 状态代码。
inline void AtlThrow(
HRESULT hr
);
参数
- hr
标准HRESULT值。
备注
ATL和MFC代码使用处于错误状态情况下,此功能。它可以从您的代码还调用。此功能的默认实现取决于符号 _ATL_NO_EXCEPTIONS 的定义和项目、MFC或ATL的类型。
在所有情况下,此功能跟踪HRESULT到调试器。
如果 _ATL_NO_EXCEPTIONS 在MFC项目中未定义,此函数引发 CMemoryException 或 COleException 基于HRESULT的值。
如果 _ATL_NO_EXCEPTIONS 在ATL项目中未定义,该函数引发 CAtlException。
如果 _ATL_NO_EXCEPTIONS 定义,该函数会导致断言失败而不是引发异常。
对于ATL项目,提供ATL将使用了此功能的实现在失败情况下是可能的。为此,请定义您使用签名自己的函数和 AtlThrow 和#define AtlThrow 相同是您的函数的名称。必须在之前执行这包括表示的atlexcept.h (必须在包括所有ATL标头之前执行它,因为atlbase.h包括atlexcept.h)。
示例
// Constructors and operators cannot return error codes, and
// so they are the place where exceptions are generally used.
class CMyClass
{
private:
CComPtr<IBuddy> m_spBuddy;
public:
CMyClass()
{
HRESULT hr = m_spBuddy.CoCreateInstance(CLSID_Buddy);
if (FAILED(hr))
AtlThrow(hr);
}
// methods ..
};
要求
Header: atldef.h