Поделиться через


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

См. также

Ссылки

CAtlException Class

ATLTRACE2

Класс CMemoryException

Класс COleException

AtlThrowLastWin32

Другие ресурсы

Debugging and Error Reporting Global Functions