AtlThrow
Appelez cette fonction pour signaler une erreur en fonction d'un code d'état d' HRESULT .
inline void AtlThrow(
HRESULT hr
);
Paramètres
- hr
HRESULT standard.
Notes
Cette fonction est utilisée par code ATL et MFC en cas d'une condition d'erreur. Elle peut également être appelée de votre propre code. L'implémentation par défaut de cette fonction dépend de la définition du symbole _ATL_NO_EXCEPTIONS et du type de projet, de MFC ou ATL.
Dans tous les cas, cette fonction suit le HRESULT au débogueur.
Si _ATL_NO_EXCEPTIONS n'est pas défini dans un projet MFC, les lève de cette fonction CMemoryException ou COleException selon la valeur du HRESULT.
Si _ATL_NO_EXCEPTIONS n'est pas défini dans un projet ATL, la fonction lève CAtlException.
Si _ATL_NO_EXCEPTIONS est défini, la fonction entraîne l'échec d'assertion au lieu de lever une exception.
Pour les projets ATL, il est possible de fournir votre propre implémentation de cette fonction à utiliser par ATL en cas d'un échec. Pour ce faire, définissez votre propre fonction avec la même signature que AtlThrow et #define AtlThrow pour être le nom de la fonction. Cela doit être effectué avant et atlexcept.h (ce qui signifie qu'il doit être effectué avant d'inclure tous les en-têtes ATL comme atlbase.h inclut atlexcept.h).
Exemple
// 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 ..
};
Configuration requise
Header: atldef.h