Freigeben über


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

Siehe auch

Referenz

CAtlExceptions-Klasse

ATLTRACE2

CMemoryExceptions-Klasse

COleExceptions-Klasse

AtlThrowLastWin32

Weitere Ressourcen

Debuggen und Fehlerberichts-globale Funktionen