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