AtlThrow
Chiamare la funzione per segnalare un errore in base a un codice di stato HRESULT.
inline void AtlThrow(
HRESULT hr
);
Parametri
- hr
Valore HRESULT standard.
Note
Questa funzione viene utilizzata da ATL e dal codice MFC in caso di condizione di errore. Può essere chiamata dal codice. L'implementazione predefinita di questa funzione dipende dalla definizione del simbolo _ATL_NO_EXCEPTIONS e dal tipo di progetto, ATL o MFC.
In tutti i casi, questa funzione traccia l'hresult al debugger.
Se _ATL_NO_EXCEPTIONS non è definito in un progetto MFC, genera di questa funzione CMemoryException o COleException in base al valore di HRESULT.
Se _ATL_NO_EXCEPTIONS non è definito in un progetto ATL, la funzione genera CAtlException.
Se _ATL_NO_EXCEPTIONS è definito, la funzione provoca un errore di asserzione anziché generare un'eccezione.
Per i progetti ATL, è possibile fornire un'implementazione personalizzata di questa funzione da utilizzare da ATL in caso di errore. A tale scopo, definire una funzione con la stessa firma AtlThrow e #define AtlThrow per essere il nome della funzione. Questa operazione deve essere eseguita prima inclusi atlexcept.h (cioé che deve essere eseguito prima dell'inclusione delle intestazioni ATL poiché atlbase.h include atlexcept.h).
Esempio
// 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 ..
};
Requisiti
Header: atldef.h