AtlThrow
更新 : 2007 年 11 月
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 ..
};
必要条件
ヘッダー : atldef.h