AtlThrow
HRESULT ステータス コードに基づいてエラーを通知します。
構文
inline void AtlThrow(
HRESULT hr
);
パラメーター
- hr
標準の HRESULT 値。
解説
この関数は、エラーが発生したときに ATL と MFC コードによって使用されます。 また、独自のコードから呼び出すことができます。 この関数の既定の実装は _ATL_NO_EXCEPTIONS シンボルの定義と MFC プロジェクト、または ATL の種類によって異なります。
いずれの場合でも、この関数はデバッガーは HRESULT をたどります。
_ATL_NO_EXCEPTIONS が MFC プロジェクトで定義されていない場合、この関数はに HRESULT 値に CMemoryException か COleException 基づいて。
_ATL_NO_EXCEPTIONS が ATL プロジェクトで定義されていない場合、関数は CAtlExceptionをスローします。
_ATL_NO_EXCEPTIONS が定義されている場合、関数によって例外をスローする代わりにアサーション エラーが発生します。
ATL プロジェクトで、失敗の場合は、ATL に使用するこの関数の独自の実装を提供することができます。 そのため、関数の名前として AtlThrow、#define AtlThrow と同じシグネチャで独自の関数を定義します。 これは atlexcept.h atlbase.h が atlexcept.h が含まれているため) ATL ヘッダーをインクルードする前に実行する必要があること (が意味する前に行う必要があります。
使用例
// 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