次の方法で共有


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

参照

参照

CAtlException クラス

ATLTRACE2

CMemoryException クラス

COleException クラス

AtlThrowLastWin32

その他の技術情報

デバッグとエラー報告に関するグローバル関数