COMException Classe

Definição

A exceção que é lançada quando um HRESULT não reconhecido é devolvido 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

Observações

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

O Common Language Runtime transforma HRESULTs bem conhecidos em exceções .NET, permitindo que objetos COM retornem informações de erro significativas para clientes geridos. O mapeamento HRESULT-to-exception também funciona em sentido inverso, retornando HRESULTs específicos para clientes não geridos. 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 possui uma exceção específica correspondente), lança uma instância da classe COMException. Essa exceção para todos os fins expõe os mesmos membros que qualquer exceção e herda uma propriedade pública ErrorCode que contém o HRESULT retornado pelo destinatário. Se uma mensagem de erro estiver disponível para o tempo de execução (obtida da interface IErrorInfo ou do Err objeto no Visual Basic ou, em alguns casos, do sistema operacional), a mensagem será retornada para o chamador. No entanto, se o desenvolvedor do componente COM não incluir uma mensagem de erro, o tempo de execução retorna 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

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

Verifique a ErrorCode propriedade. Quando o runtime encontra um HRESULT desconhecido e lança uma exceção COMException, a propriedade ErrorCode inclui a mensagem de erro ou, caso esta não esteja 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 Valores comuns de HRESULT.

Ao passar argumentos de ligação tardia para os métodos de objetos do tipo Microsoft Office, uma exceção COMException pode ser lançada quando esses objetos são do tipo COM. O vinculador tardio assume que tais chamadas de método envolvem um ByRef parâmetro e que a propriedade que é passada tem um set acessor. Se a propriedade não existir, o .NET gerará uma MissingMethodException exceção (com um CORE_E_MISSINGMETHOD HRESULT). Para contornar esse comportamento, use objetos de ligação antecipada ou passe uma variável em vez de uma propriedade do objeto.

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 lançada. Em alguns casos, executar o Visual Studio como administrador pode resolver o problema. Você também pode desativar 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, lançar uma exceção .NET específica é 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 lançar uma exceção.

Construtores

Name Descrição
COMException()

Inicializa uma nova instância da COMException classe com valores por defeito.

COMException(SerializationInfo, StreamingContext)
Obsoleto.

Inicializa uma nova instância da COMException classe a 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 COMException classe com uma mensagem e código de erro especificados.

COMException(String)

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

Propriedades

Name Descrição
Data

Obtém uma coleção de pares chave/valor que fornecem informação adicional definida pelo utilizador sobre a exceção.

(Herdado de Exception)
ErrorCode

Obtém o HRESULT erro do erro.

(Herdado de ExternalException)
HelpLink

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

(Herdado de Exception)
HResult

Recebe 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

Recebe uma mensagem que descreve a exceção atual.

(Herdado de Exception)
Source

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

(Herdado de Exception)
StackTrace

Obtém uma representação string dos frames imediatos na stack de chamadas.

(Herdado de Exception)
TargetSite

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

(Herdado de Exception)

Métodos

Name Descrição
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetBaseException()

Quando sobrescrito numa classe derivada, devolve o Exception que é a causa raiz de uma ou mais exceções subsequentes.

(Herdado de Exception)
GetHashCode()

Serve como função de hash predefinida.

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

Quando sobreposto numa classe derivada, define a SerializationInfo informação com sobre a exceção.

(Herdado de Exception)
GetType()

Obtém o tipo de execução da instância atual.

(Herdado de Exception)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
ToString()

Converte o conteúdo da exceção numa cadeia.

ToString()

Cria e devolve uma representação string da exceção atual.

(Herdado de Exception)

Eventos

Name Descrição
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

Ver também