AtlThrow
telefonar Esta função para sinalizar um erro baseia um HRESULT código de status.
inline void AtlThrow(
HRESULT hr
);
Parâmetros
- hr
Valor HRESULT padrão.
Comentários
Esta função é usada pelo código ATL e MFC no evento uma condição de erro.Ele também pode ser chamado de seu próprio código.A implementação padrão dessa função varia de acordo com a definição do símbolo _ATL_NO_EXCEPTIONS e o tipo de projeto, MFC ou ATL.
Em todos os casos, essa função rastreia o HRESULT para o depurador.
If _ATL_NO_EXCEPTIONS não é definido em um projeto MFC, essa função lança um CMemoryException or a COleException com base no valor do HRESULT.
If _ATL_NO_EXCEPTIONS não é definido em um projeto ATL, a função lança um CAtlException.
If _ATL_NO_EXCEPTIONS é definida, a função faz com que um erro de declaração em vez de gerar uma exceção.
Para projetos ATL, é possível fornecer sua própria implementação desta função a ser usada pelo ATL no caso de falha.Para fazer isso, definir sua própria função com a mesma assinatura sistema autônomo AtlThrow e # define AtlThrow a ser o nome de sua função. Isso deve ser concluído antes de incluir atlexcept.h (o que significa que ele deve ser concluído antes incluindo os cabeçalhos ATL como 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