共用方式為


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 類別

ATLTRA CE2

CMemoryException 類別

COleException 類別

AtlThrowLastWin32

其他資源

偵錯和錯誤報告全域函式