Compartilhar via


Estratégias de tratamento de erros

Como os métodos de interface são virtuais, não é possível que um chamador saiba o conjunto completo de valores que podem ser retornados de qualquer chamada. Uma implementação de um método pode retornar cinco valores; outro pode retornar oito.

A documentação lista valores comuns que podem ser retornados para cada método; esses são os valores que você deve verificar e manipular em seu código porque eles têm significados especiais. Outros valores podem ser retornados, mas como eles não são significativos, você não precisa escrever código especial para lidar com eles. Uma verificação simples de zero ou diferente de zero é adequada.

Valores HRESULT

O valor retornado de funções e métodos COM é um HRESULT. Os valores de alguns HRESULTs foram alterados em COM para eliminar toda a duplicação e sobreposição com os códigos de erro do sistema. Aqueles que duplicam códigos de erro do sistema foram alterados para FACILITY_WIN32 e aqueles que se sobrepõem permanecem em FACILITY_NULL. Valores HRESULT comuns e seus valores são listados na tabela a seguir.

HRESULT Valor Descrição
E_ABORT
0x80004004
A operação foi anulada devido a um erro não especificado.
E_ACCESSDENIED
0x80070005
Um erro geral negado pelo acesso.
E_FAIL
0x80004005
Ocorreu uma falha não especificada.
E_HANDLE
0x80070006
Um identificador inválido foi usado.
E_INVALIDARG
0x80070057
Um ou mais argumentos são inválidos.
E_NOINTERFACE
0x80004002
O método QueryInterface não reconheceu a interface solicitada. Não há suporte para a interface.
E_NOTIMPL
0x80004001
O método não é implementado.
E_OUTOFMEMORY
0x8007000E
O método falhou ao alocar a memória necessária.
E_PENDING
0x8000000A
Os dados necessários para concluir a operação ainda não estão disponíveis.
E_POINTER
0x80004003
Um ponteiro inválido foi usado.
E_UNEXPECTED
0x8000FFFF
Ocorreu uma falha catastrófica.
S_FALSE
0x00000001
O método foi bem-sucedido e retornou o valor booliano false.
S_OK
0x00000000
O método foi bem-sucedido. Se um valor retornado booliano for esperado, o valor retornado será VERDADEIRO.

Erros de rede

Se os quatro primeiros dígitos do código de erro forem 8007, isso indicará um erro de rede ou sistema. Você pode usar o comando net para decodificar esses tipos de erros. Para decodificar o erro, primeiro converta os últimos quatro dígitos do código de erro hexadecimal em decimal. Em seguida, no prompt de comando, digite o seguinte, em que o código decimal é substituído pelo valor retornado que você deseja decodificar:

< decimal_code> de suporte técnico líquido

O comando net retorna uma descrição do erro. Por exemplo, se COM retornar o erro 8007054B, converta o 054B em decimal (1355). Em seguida, digite o seguinte:

1355

O comando net retorna a descrição do erro: "O domínio especificado não existia".

tratamento de erros no COM