Partilhar via


AtlThrow

Chamar essa função para sinalizar um erro com base em um código de status de HRESULT .

inline void AtlThrow( 
   HRESULT hr 
);

Parâmetros

  • hr
    Valor padrão do HRESULT.

Comentários

Essa função é usada pelo código de ATL e de MFC no caso de uma condição de erro. Também pode ser chamada do seu próprio código. A implementação padrão da função depende de definição do símbolo _ATL_NO_EXCEPTIONS e o tipo de projeto, MFC de ou de ATL.

Em todos os casos, essa função rastreamento do depurador ao HRESULT.

Se _ATL_NO_EXCEPTIONS não é definido em um projeto MFC, o gera de essa função CMemoryException ou COleException com base no valor do HRESULT.

Se _ATL_NO_EXCEPTIONS não é definido em um projeto de ATL, a função gera CAtlException.

Se _ATL_NO_EXCEPTIONS é definido, a função causa uma falha de declaração em vez de gerar uma exceção.

Para projetos de ATL, é possível fornecer sua própria implementação de essa função a ser usada por ATL no caso de uma falha. Para fazer isso, defina sua própria função com a mesma assinatura de AtlThrow e o #define AtlThrow para o nome da função. Isso deve ser feito antes de incluir atlexcept.h (que significa que deve ser feito antes de incluir todos os cabeçalhos de ATL desde que atlbase.h inclui atlexcept.h).

Exemplo

// 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 ..
};

Requisitos

Cabeçalho: atldef.h

Consulte também

Referência

Classe de CAtlException

ATLTRACE2

Classe CMemoryException

Classe COleException

AtlThrowLastWin32

Outros recursos

Funções globais de depuração e relatório de erros