AtlThrow

 

Veröffentlicht: Juli 2016

Rufen Sie diese Funktion auf, um einen Fehler auf der Grundlage eines HRESULT Statuscode zu signalisieren.

Syntax

      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

Debugging and Error Reporting Global Functions
CAtlException Class
ATLTRACE2
CMemoryException Class
COleException Class
AtlThrowLastWin32