Classe COMException

 

Observação

The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.

A exceção é lançada quando um HRESULT não reconhecido retorna de uma chamada de método COM.

Namespace:   System.Runtime.InteropServices
Assembly:  mscorlib (em mscorlib.dll)

Hierarquia de Herança

System.Object
  System.Exception
    System.SystemException
      System.Runtime.InteropServices.ExternalException
        System.Runtime.InteropServices.COMException
          System.DirectoryServices.DirectoryServicesCOMException

Sintaxe

[SerializableAttribute]
[ComVisibleAttribute(true)]
public class COMException : ExternalException
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class COMException : ExternalException
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
type COMException = 
    class
        inherit ExternalException
    end
<SerializableAttribute>
<ComVisibleAttribute(True)>
Public Class COMException
    Inherits ExternalException

Construtores

Nome Descrição
System_CAPS_pubmethod COMException()

Inicializa uma nova instância da classe COMException com valores padrão.

System_CAPS_protmethod COMException(SerializationInfo, StreamingContext)

Inicializa uma nova instância da classe COMException dos dados de serialização.

System_CAPS_pubmethod COMException(String)

Inicializa uma nova instância da classe COMException com uma mensagem especificada.

System_CAPS_pubmethod COMException(String, Exception)

Inicializa uma nova instância da classe COMException com uma mensagem de erro especificada e uma referência à exceção interna que é a causa da exceção.

System_CAPS_pubmethod COMException(String, Int32)

Inicializa uma nova instância da classe COMException com uma mensagem e um código de erro especificados.

Propriedades

Nome Descrição
System_CAPS_pubproperty Data

Obtém uma coleção de pares de chave/valor que fornecem informações adicionais definidas pelo usuário sobre a exceção.(Herdado de Exception.)

System_CAPS_pubproperty ErrorCode

Obtém o HRESULT do erro.(Herdado de ExternalException.)

System_CAPS_pubproperty HelpLink

Obtém ou define um link para o arquivo de ajuda associado a essa exceção.(Herdado de Exception.)

System_CAPS_pubproperty HResult

Obtém ou define HRESULT, um valor numérico codificado que é atribuído a uma exceção específica.(Herdado de Exception.)

System_CAPS_pubproperty InnerException

Obtém a instância Exception que causou a exceção atual.(Herdado de Exception.)

System_CAPS_pubproperty Message

Obtém uma mensagem que descreve a exceção atual.(Herdado de Exception.)

System_CAPS_pubproperty Source

Obtém ou define o nome do aplicativo ou objeto que causa o erro.(Herdado de Exception.)

System_CAPS_pubproperty StackTrace

Obtém uma representação de cadeia de caracteres de quadros imediatos na pilha de chamadas.(Herdado de Exception.)

System_CAPS_pubproperty TargetSite

Obtém o método que gerou a exceção atual.(Herdado de Exception.)

Métodos

Nome Descrição
System_CAPS_pubmethod Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.(Herdado de Object.)

System_CAPS_protmethod Finalize()

Permite que um objeto tente liberar recursos e executar outras operações de limpeza antes de ser recuperado pela coleta de lixo.(Herdado de Object.)

System_CAPS_pubmethod GetBaseException()

Quando substituído em uma classe derivada, retorna a Exception que é a causa raiz de uma ou mais exceções subsequentes.(Herdado de Exception.)

System_CAPS_pubmethod GetHashCode()

Serve como a função de hash padrão.(Herdado de Object.)

System_CAPS_pubmethod GetObjectData(SerializationInfo, StreamingContext)

Quando substituído em uma classe derivada, define o SerializationInfo com informações sobre a exceção.(Herdado de Exception.)

System_CAPS_pubmethod GetType()

Obtém o tipo de tempo de execução da instância atual.(Herdado de Exception.)

System_CAPS_protmethod MemberwiseClone()

Cria uma cópia superficial do Object atual.(Herdado de Object.)

System_CAPS_pubmethod ToString()

Converte o conteúdo da exceção em uma cadeia de caracteres.(Substitui o ExternalException.ToString().)

Eventos

Nome Descrição
System_CAPS_protevent SerializeObjectState

Ocorre quando uma exceção é serializada para criar um objeto de estado de exceção que contém dados serializados sobre a exceção.(Herdado de Exception.)

Comentários

O common language runtime transforma conhecidos HRESULTs em exceções do .NET Framework, permitindo que os objetos retornar informações de erro significativas para os clientes gerenciados. O HRESULT para mapeamento de exceção também funciona na outra direção, retornando HRESULTs específicos para clientes não gerenciados. Para obter detalhes de mapeamento, consulte Como mapear HRESULTs e exceções.

Quando o tempo de execução encontra um HRESULT desconhecido (um HRESULT que não tem uma exceção específica, correspondente), ele gera uma instância do COMException classe. Essa exceção multifuncional expõe os mesmos membros da exceção e herda um público ErrorCode propriedade que contenha o HRESULT retornado pelo receptor. Se uma mensagem de erro está disponível para o tempo de execução (obtido o IErrorInfo interface ou Err objeto no Visual Basic ou, em alguns casos do sistema operacional), a mensagem é retornada para o chamador. No entanto, se o desenvolvedor do componente COM não incluir uma mensagem de erro, o tempo de execução retornará o HRESULT de oito dígitos no lugar de uma cadeia de caracteres de mensagem. Ter um HRESULT permite que o chamador determinar a causa da exceção genérica.

Tratando uma exceção COMException

A seguir estão algumas considerações para solucionar problemas de um COMException exceção.

  • Verifique o ErrorCode propriedade
    Quando o tempo de execução encontra um HRESULT desconhecido e lança um COMException exceção, o ErrorCode propriedade inclui a mensagem de erro ou, se uma mensagem de erro não estiver disponível, o valor HRESULT de oito dígitos. A mensagem de erro ou o valor HRESULT pode ajudá-lo a determinar a causa da exceção.

    Para obter uma lista de valores HRESULT, consulte Common HRESULT Values.

  • Argumentos de associação tardia e objetos do Microsoft Office
    Ao passar argumentos de associação tardia para métodos de objetos do Microsoft Office, um COMException exceção pode ser lançada quando os objetos são objetos COM. A associação tardia presume que essas chamadas de método envolvem um parâmetro ByRef e que a propriedade passada por você tem um acessador set. Se a propriedade não existir, o .NET Framework gera um MissingMethodException exceção (com um CORE_E_MISSINGMETHOD HRESULT). Para contornar esse comportamento, use objetos de associação antecipada ou passe uma variável em vez de uma propriedade do objeto.

  • O Visual Studio e o processo de hospedagem
    COM é usado para comunicação entre o Visual Studio e o hosting process. Porque ele é usado antes de executar o código, uma chamada para CoInitializeSecurity faz com que essa exceção seja lançada.

    Em alguns casos, executando o Visual Studio como administrador pode resolver o problema. Você também pode disable the hosting process.

Gerar uma exceção de COMException

Embora você possa usar o COMException classe para retornar HRESULTs específicos para clientes não gerenciados, lançando uma exceção específica do .NET Framework é melhor do que usando uma exceção genérica. Considere a possibilidade de que clientes gerenciados, bem como os clientes não gerenciados podem usar o objeto do .NET Framework e lançar um HRESULT para um chamador gerenciado é menos abrangente que gerar uma exceção.

Informações de Versão

Plataforma Universal do Windows
Disponível desde 8
.NET Framework
Disponível desde 1.1
Biblioteca de Classes Portátil
Com suporte no: plataformas portáteis do .NET
Silverlight
Disponível desde 2.0
Windows Phone Silverlight
Disponível desde 7.0
Windows Phone
Disponível desde 8.1

Acesso thread-safe

Quaisquer membros estáticos públicos ( Compartilhado no Visual Basic) desse tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Confira Também

Exception
Namespace System.Runtime.InteropServices
Manipulando e lançando exceções

Retornar ao início