Compartilhar via


Interpretando códigos de erro

Depois de determinar qual aplicativo é a origem de um problema, você precisa descobrir qual erro ocorreu. Os erros são gerados e relatados em diferentes formatos, dependendo do idioma usado pelo aplicativo.

No Microsoft Visual C++, valores de êxito, aviso e falha são retornados usando um número de 32 bits conhecido como HRESULT. Para obter uma lista de valores HRESULT definidos pelo sistema, consulte o arquivo de cabeçalho Winerror.h incluído com o SDK do Windows. Este arquivo inclui todos os códigos de erro COM+ e descrições. Para obter mais informações sobre valores HRESULT , consulte Tratamento de erros.

Na linguagem Java, uma instância de com.ms.com.ComFailException é lançada para indicar falha, onde o objeto ComFailException especifica um HRESULT. Uma instância de com.ms.com.ComSuccessException indica êxito com um valor de retorno False. Para obter informações sobre como interpretar essas exceções, consulte a documentação do Microsoft Visual J++.

Observação

Os processos do servidor de aplicativos COM+ que hospedam objetos do Visual J++ não ficarão ociosos (mesmo com zero objetos ativos), a menos que você desative a depuração JIT no IDE VJ6. Para obter informações sobre como fazer isso, consulte a documentação do Visual J++.

No Visual Basic, você pode recuperar valores HRESULT examinando a propriedade Err.Number. Uma descrição do erro pode ser recuperada com a propriedade Err.Description.

Você também pode usar o utilitário ERRLOOK no Microsoft Visual Studio para recuperar uma mensagem de erro do sistema ou mensagem de erro de módulo. ERRLOOK recupera o texto da mensagem de erro automaticamente se você arrastar e soltar um valor hexadecimal ou decimal do depurador do Visual Studio ou outro aplicativo habilitado para automação. Você também pode inserir um valor digitando-o ou colando-o na área de transferência do IDE e clicando na opção Pesquisar .

O método C++ a seguir imprime uma descrição do erro, com base na entrada HRESULT.

#include <stdio.h>
#include <windows.h>
#include <tchar.h>

void ErrorDescription(HRESULT hr) 
{ 
     if(FACILITY_WINDOWS == HRESULT_FACILITY(hr)) 
         hr = HRESULT_CODE(hr); 
     TCHAR* szErrMsg; 

     if(FormatMessage( 
       FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM, 
       NULL, hr, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), 
       (LPTSTR)&szErrMsg, 0, NULL) != 0) 
     { 
         _tprintf(TEXT("%s"), szErrMsg); 
         LocalFree(szErrMsg); 
     } else 
         _tprintf( TEXT("[Could not find a description for error # %#x.]\n"), hr); 
}

A tabela a seguir fornece descrições de códigos de erro comuns em COM+.

Códigos do Erro Definições
COMADMIN_E_ALREADYINSTALLED
O objeto já está registrado.
COMADMIN_E_APP_FILE_READFAIL
Ocorreu um erro ao ler o arquivo de aplicativo.
COMADMIN_E_APP_FILE_VERSION
Número de versão inválido no arquivo do aplicativo.
COMADMIN_E_APP_FILE_WRITEFAIL
Ocorreu um erro ao gravar no arquivo do aplicativo.
COMADMIN_E_APPDIRNOTFOUND
O diretório de instalação do aplicativo não foi encontrado.
COMQC_E_APPLICATION_NOT_QUEUED
Somente aplicativos COM+ marcados como "em fila" podem ser criados usando o moniker "fila".
COMADMIN_E_APPLICATIONEXISTS
O aplicativo já está instalado.
COMADMIN_E_APPLID_MATCHES_CLSID
Um CLSID com o mesmo GUID que o novo ID do aplicativo já está instalado nesta máquina.
COMADMIN_E_APP_NOT_RUNNING
O aplicativo especificado não está em execução no momento.
COMADMIN_E_AUTHENTICATIONLEVEL
Não é possível definir o nível de autenticação necessário para a solicitação de atualização.
COMADMIN_E_BADPATH
O caminho do arquivo é inválido.
COMADMIN_E_BADREGISTRYLIBID
O ID da biblioteca de tipos registrados é inválido.
COMADMIN_E_BADREGISTRYPROGID
O ProgID do componente está ausente ou corrompido.
COMADMIN_E_CAN_NOT_EXPORT_APP_PROXY
O proxy de aplicativo não é exportável.
COMADMIN_E_CAN_NOT_START_APP
Falha ao iniciar o aplicativo porque ele é um aplicativo de biblioteca ou um proxy de aplicativo.
COMADMIN_E_CAN_NOT_EXPORT_SYS_APP
O aplicativo do sistema não é exportável.
COMADMIN_E_CANT_SUBSCRIBE_TO_COMPONENT
O usuário não pode assinar esse componente porque o componente pode ter sido importado.
COMADMIN_E_CANTCOPYFILE
Ocorreu um erro ao copiar o arquivo.
COMADMIN_E_CLSIDORIIDMISMATCH
CLSIDs ou IIDs de arquivo de aplicativo não correspondem às DLLs correspondentes.
COMADMIN_E_COMP_MOVE_BAD_DEST
A movimentação do componente falhou porque o aplicativo de destino não existe mais.
COMADMIN_E_COMP_MOVE_LOCKED
A movimentação do componente não foi permitida porque o aplicativo de origem ou de destino é um aplicativo do sistema ou está atualmente bloqueado contra alterações.
COMADMIN_E_COMPFILE_BADTLB
A biblioteca de tipos não pôde ser carregada.
COMADMIN_E_COMPFILE_CLASSNOTAVAIL
A DLL não oferece suporte aos componentes listados na biblioteca de tipos.
COMADMIN_E_COMPFILE_DOESNOTEXIST
Esse arquivo não existe.
COMADMIN_E_COMPFILE_GETCLASSOBJ
O método GetClassObject falhou na DLL.
COMADMIN_E_COMPFILE_LOADDLLFAIL
A DLL não pôde ser carregada.
COMADMIN_E_COMPFILE_NOREGISTRAR
O registrador de componentes mencionado neste arquivo não está disponível.
COMADMIN_E_COMPFILE_NOTINSTALLABLE
O arquivo não contém componentes ou informações de componentes.
COMADMIN_E_COREQCOMPINSTALLED
Um componente na mesma DLL já está instalado.
COMADMIN_E_DLLLOADFAILED
A DLL não pôde ser carregada.
COMADMIN_E_DLLREGISTERSERVER
A função DllRegisterServer falhou quando o componente foi instalado.
COMADMIN_E_EVENTCLASS_CANT_BE_SUBSCRIBER
Uma classe de evento não pode ser configurada como um componente de assinante. Quando uma tentativa é feita para criar uma assinatura com uma classe de evento como um assinante, esse erro é retornado.
COMADMIN_E_INVALIDUSERIDS
Um ou mais usuários no arquivo de aplicativo não são válidos.
COMADMIN_E_KEYMISSING
O objeto não foi encontrado no catálogo.
COMADMIN_E_LIB_APP_PROXY_INCOMPATIBLE
Aplicativos de biblioteca e proxies de aplicativo são incompatíveis. Esse erro é retornado quando é feita uma tentativa de exportar um proxy de aplicativo e a propriedade de ativação do aplicativo é uma biblioteca.
COMADMIN_E_NOREGISTRYCLSID
O CLSID do componente está ausente ou corrompido.
COMADMIN_E_NOSERVERSHARE
Nenhum compartilhamento de arquivos do servidor está disponível.
COMADMIN_E_NOTCHANGEABLE
As alterações nesse objeto e em seus subobjetos foram desabilitadas.
COMADMIN_E_NOTDELETEABLE
A função delete foi desabilitada para este objeto.
COMADMIN_E_NOTINREGISTRY
O objeto não foi encontrado no registro.
COMADMIN_E_NOUSER
Um ou mais usuários não são válidos.
COMADMIN_E_OBJECT_DOES_NOT_EXIST
Um dos objetos especificados não pode ser encontrado.
COMADMIN_E_OBJECT_PARENT_MISSING
Um dos objetos que está sendo inserido ou atualizado não pertence a uma coleção pai válida.
COMADMIN_E_OBJECTERRORS
Ocorreram erros ao acessar um ou mais objetos. Para obter mais informações, consulte a coleção ErrorInfo .
COMADMIN_E_OBJECTEXISTS
O objeto que você está tentando adicionar ou renomear já existe.
COMADMIN_E_OBJECTINVALID
Uma ou mais propriedades do objeto estão ausentes ou são inválidas.
COMADMIN_E_OBJECTNOTPOOLABLE
Este objeto não pode ser agrupado.
COMADMIN_E_PROPERTYSAVEFAILED
Uma ou mais configurações de propriedade são inválidas ou estão em conflito entre si.
COMADMIN_E_PROPERTY_OVERFLOW
O valor da propriedade é muito grande.
COMADMIN_E_REGFILE_CORRUPT
O arquivo de registro está corrompido.
COMADMIN_E_REGISTERTLB
O sistema não pôde registrar a biblioteca de tipos.
COMADMIN_E_REGISTRARFAILED
Ocorreram erros enquanto estava no registrador de componentes.
COMADMIN_E_REMOTEINTERFACE
As informações da interface estão ausentes ou foram alteradas.
COMADMIN_E_REQUIRES_DIFFERENT_PLATFORM
Esta operação não está habilitada nesta plataforma.
COMADMIN_E_ROLE_DOES_NOT_EXIST
Uma função atribuída a um componente, interface ou método não existe no aplicativo.
COMADMIN_E_ROLEEXISTS
O papel já existe.
COMADMIN_E_SERVICENOTINSTALLED
O serviço não está instalado.
COMADMIN_E_SESSION
A versão do catálogo do servidor não é suportada.
COMADMIN_S_SOMEALREADYPAUSED
Um ou mais dos processos de aplicação especificados já estavam pausados.
COMADMIN_S_SOMEALREADYRUNNING
Um ou mais dos processos de aplicativo especificados já estavam em execução.
COMADMIN_E_START_APP_NEEDS_COMPONENTS
Para iniciar o aplicativo, você deve ter componentes em um aplicativo.
COMADMIN_E_SVCAPP_NOT_POOLABLE_OR_RECYCLABLE
Os aplicativos COM+ em execução como um serviço NT não podem ser marcados como agrupados ou reciclados.
COMADMIN_E_SYSTEMAPP
Essa operação não pode ser executada no aplicativo do sistema.
COMADMIN_E_USER_IN_SET
Um ou mais usuários já estão atribuídos a um conjunto de partições local.
COMADMIN_E_USERPASSWDNOTVALID
A identidade ou senha definida no aplicativo não é válida.

Política de isolamento de falhas e failfast

Localizando a origem de um erro

Como COM+ modifica valores de retorno

Estratégias para lidar com erros no COM+

Solução de problemas