AtlThrow
Rufen Sie diese Funktion auf, um einen Fehler auf der Grundlage eines HRESULT Statuscode zu signalisieren.
inline void AtlThrow(
HRESULT hr
);
Parameter
- hr
Wert des Standards HRESULT.
Hinweise
Diese Funktion wird durch ATL- und MFC-Code im Fall eines Fehlerzustands verwendet.Sie kann auch aus dem eigenen Code aufgerufen werden.Die Standardimplementierung dieser Funktion hängt von der Definition des Symbols _ATL_NO_EXCEPTIONS und vom Typ des Projekts, des MFC oder ATL des ab.
In allen Fällen wird diese Funktion das HRESULT an den Debugger auf.
Wenn _ATL_NO_EXCEPTIONS nicht in einem MFC-Projekt, löst dieser Funktion CMemoryException oder in COleException basierend auf dem Wert des HRESULT definiert ist.
Wenn _ATL_NO_EXCEPTIONS nicht in einem ATL-Projekt definiert wird, löst die Funktion CAtlException aus.
Wenn _ATL_NO_EXCEPTIONS definiert ist, führt die Funktion einen Assertionsfehler, anstatt eine Ausnahme auszulösen.
Für ATL-Projekte ist es möglich, eine eigene Implementierung dieser von ATL verwendet werden Funktion bereitzustellen, im Fall eines Fehlers.Hierzu, definieren Sie Ihre eigene Funktion mit der gleichen Signatur wie AtlThrow und #define AtlThrow um den Namen der Funktion zu sein.Dies muss einschließlich atlexcept.h (das zuvor geschehen bedeutet, dass vor dem Einbinden aller ATL-Header durchgeführt werden muss, da atlbase.h atlexcept.h enthält).
Beispiel
// 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 ..
};
Anforderungen
Header: atldef.h