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