AtlThrow

调用此函数发出信号错误基于 HRESULT 状态代码。

inline void AtlThrow(
   HRESULT hr
);

参数

  • hr
    标准HRESULT值。

备注

ATL和MFC代码使用处于错误状态情况下,此功能。它可以从您的代码还调用。此功能的默认实现取决于符号 _ATL_NO_EXCEPTIONS 的定义和项目、MFC或ATL的类型。

在所有情况下,此功能跟踪HRESULT到调试器。

如果 _ATL_NO_EXCEPTIONS 在MFC项目中未定义,此函数引发 CMemoryExceptionCOleException 基于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

请参见

参考

CAtlException选件类

ATLTRACE2

CMemoryException选件类

COleException选件类

AtlThrowLastWin32

其他资源

调试和错误报告全局函数