次の方法で共有


AtlThrow

 

HRESULT ステータス コードに基づいてエラーを通知します。

構文

      inline void AtlThrow(
   HRESULT hr
);

パラメーター

  • hr
    標準の HRESULT 値。

解説

この関数は、エラーが発生したときに ATL と MFC コードによって使用されます。 また、独自のコードから呼び出すことができます。 この関数の既定の実装は _ATL_NO_EXCEPTIONS シンボルの定義と MFC プロジェクト、または ATL の種類によって異なります。

いずれの場合でも、この関数はデバッガーは HRESULT をたどります。

_ATL_NO_EXCEPTIONS が MFC プロジェクトで定義されていない場合、この関数はに HRESULT 値に CMemoryExceptionCOleException 基づいて。

_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