COMException Classe

Definição

A exceção gerada quando um HRESULT não reconhecido é retornado de uma chamada de método COM.

public ref class COMException : Exception
public ref class COMException : System::Runtime::InteropServices::ExternalException
public class COMException : Exception
public class COMException : System.Runtime.InteropServices.ExternalException
[System.Serializable]
public class COMException : System.Runtime.InteropServices.ExternalException
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class COMException : System.Runtime.InteropServices.ExternalException
type COMException = class
    inherit Exception
type COMException = class
    inherit ExternalException
[<System.Serializable>]
type COMException = class
    inherit ExternalException
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type COMException = class
    inherit ExternalException
Public Class COMException
Inherits Exception
Public Class COMException
Inherits ExternalException
Herança
COMException
Herança
Derivado
Atributos

Comentários

A classe COMException é a exceção que é lançada quando um HRESULT não reconhecido é retornado de uma chamada de método COM.

O CLR (Common Language Runtime) transforma HRESULTs conhecidos em exceções .NET, permitindo que os objetos COM retornem informações de erro significativas aos clientes gerenciados. O mapeamento de HRESULT para exceção também funciona na outra direção, retornando HRESULTs específicas para clientes não gerenciados. Para obter detalhes de mapeamento, consulte Como mapear HRESULTs e exceções.

Quando o runtime encontra um HRESULT desconhecido (um HRESULT que não tem uma exceção específica e correspondente), ele gera uma instância da COMException classe. Esta exceção de uso geral expõe os mesmos membros que qualquer exceção e herda uma propriedade pública ErrorCode que contém o HRESULT retornado pelo chamador. Se uma mensagem de erro estiver disponível para o runtime (obtida da interface IErrorInfo ou do Err objeto no Visual Basic ou em alguns casos do sistema operacional), a mensagem será retornada ao chamador. No entanto, se o desenvolvedor do componente COM não incluir uma mensagem de erro, o runtime retornará o HRESULT de oito dígitos no lugar de uma cadeia de caracteres de mensagem. Ter um HRESULT permite que o chamador determine a causa da exceção genérica.

Manipular uma exceção COMException

Veja a seguir algumas considerações para solucionar problemas de uma COMException exceção.

Verifique a propriedade ErrorCode. Quando o runtime encontra um HRESULT desconhecido e gera uma exceção COMException, a propriedade ErrorCode 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 podem ajudá-lo a determinar a causa da exceção.

Para obter uma lista de valores HRESULT, consulte Valores HRESULT Comuns.

Ao passar argumentos com limite tardio para métodos de objetos do Microsoft Office, uma COMException exceção pode ser gerada 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 fizer isso, .NET gerará uma MissingMethodException exceção (com um CORE_E_MISSINGMETHOD HRESULT). Para contornar esse comportamento, use objetos associados antecipadamente ou passe uma variável em vez de uma propriedade do objeto.

O COM é usado para se comunicar entre o Visual Studio e o processo de hospedagem. Como ele é usado antes da execução do código, uma chamada para CoInitializeSecurity faz com que essa exceção seja gerada. Em alguns casos, executar o Visual Studio como Administrador pode resolver o problema. Você também pode desabilitar o processo de hospedagem.

Gerar uma exceção COMException

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

Construtores

Nome Description
COMException()

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

COMException(SerializationInfo, StreamingContext)
Obsoleto.

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

COMException(String, Exception)

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

COMException(String, Int32)

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

COMException(String)

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

Propriedades

Nome Description
Data

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

(Herdado de Exception)
ErrorCode

Obtém o HRESULT erro.

(Herdado de ExternalException)
HelpLink

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

(Herdado de Exception)
HResult

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

(Herdado de Exception)
InnerException

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

(Herdado de Exception)
Message

Obtém uma mensagem que descreve a exceção atual.

(Herdado de Exception)
Source

Obtém ou define o nome do aplicativo ou do objeto que causa o erro.

(Herdado de Exception)
StackTrace

Obtém uma representação de cadeia de caracteres dos quadros imediatos na pilha de chamadas.

(Herdado de Exception)
TargetSite

Obtém o método que gera a exceção atual.

(Herdado de Exception)

Métodos

Nome Description
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetBaseException()

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

(Herdado de Exception)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetObjectData(SerializationInfo, StreamingContext)
Obsoleto.

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

(Herdado de Exception)
GetType()

Obtém o tipo de runtime da instância atual.

(Herdado de Exception)
MemberwiseClone()

Cria uma cópia superficial do Objectatual.

(Herdado de Object)
ToString()

Converte o conteúdo da exceção em uma cadeia de caracteres.

ToString()

Cria e retorna uma representação de cadeia de caracteres da exceção atual.

(Herdado de Exception)

Eventos

Nome Description
SerializeObjectState
Obsoleto.

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)

Aplica-se a

Confira também