Compartilhar 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 de CMemoryException

Classe de COleException

AtlThrowLastWin32

Outros recursos

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