Share via


Clase COMException

 

Publicado: julio de 2016

Excepción que se produce cuando una llamada al método COM devuelve un resultado HRESULT desconocido.

Espacio de nombres:   System.Runtime.InteropServices
Ensamblado:  mscorlib (en mscorlib.dll)

Jerarquía de herencia

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

Sintaxis

[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

Constructores

Nombre Descripción
System_CAPS_pubmethod COMException()

Inicializa una nueva instancia de la clase COMException con valores predeterminados.

System_CAPS_protmethod COMException(SerializationInfo, StreamingContext)

Inicializa una nueva instancia de la COMException clase a partir de datos de serialización.

System_CAPS_pubmethod COMException(String)

Inicializa una nueva instancia de la COMException clase con un mensaje especificado.

System_CAPS_pubmethod COMException(String, Exception)

Inicializa una nueva instancia de la clase COMException con el mensaje de error especificado y una referencia a la excepción interna que representa la causa de esta excepción.

System_CAPS_pubmethod COMException(String, Int32)

Inicializa una nueva instancia de la COMException clase con un código de error y de mensaje especificado.

Propiedades

Nombre Descripción
System_CAPS_pubproperty Data

Obtiene una colección de pares clave-valor que proporcionan más información definida por el usuario sobre la excepción.(Heredado de Exception).

System_CAPS_pubproperty ErrorCode

Obtiene el elemento HRESULT del error.(Heredado de ExternalException).

System_CAPS_pubproperty HelpLink

Obtiene o establece un vínculo al archivo de ayuda asociado a esta excepción.(Heredado de Exception).

System_CAPS_pubproperty HResult

Obtiene o establece HRESULT, un valor numérico codificado que se asigna a una excepción específica.(Heredado de Exception).

System_CAPS_pubproperty InnerException

Obtiene la instancia Exception que produjo la excepción actual.(Heredado de Exception).

System_CAPS_pubproperty Message

Obtiene un mensaje que describe la excepción actual.(Heredado de Exception).

System_CAPS_pubproperty Source

Devuelve o establece el nombre de la aplicación o del objeto que generó el error.(Heredado de Exception).

System_CAPS_pubproperty StackTrace

Obtiene una representación de cadena de los marcos inmediatos en la pila de llamadas.(Heredado de Exception).

System_CAPS_pubproperty TargetSite

Obtiene el método que produjo la excepción actual.(Heredado de Exception).

Métodos

Nombre Descripción
System_CAPS_pubmethod Equals(Object)

Determina si el objeto especificado es igual al objeto actual.(Heredado de Object).

System_CAPS_protmethod Finalize()

Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de que sea reclamado por la recolección de elementos no utilizados.(Heredado de Object).

System_CAPS_pubmethod GetBaseException()

Cuando se invalida en una clase derivada, devuelve la clase Exception que representa la causa principal de una o más excepciones posteriores.(Heredado de Exception).

System_CAPS_pubmethod GetHashCode()

Sirve como la función hash predeterminada.(Heredado de Object).

System_CAPS_pubmethod GetObjectData(SerializationInfo, StreamingContext)

Cuando se invalida en una clase derivada, establece SerializationInfo con información sobre la excepción.(Heredado de Exception).

System_CAPS_pubmethod GetType()

Obtiene el tipo en tiempo de ejecución de la instancia actual.(Heredado de Exception).

System_CAPS_protmethod MemberwiseClone()

Crea una copia superficial del Object actual.(Heredado de Object).

System_CAPS_pubmethod ToString()

Convierte el contenido de la excepción en una cadena.(Invalida ExternalException.ToString()).

Eventos

Nombre Descripción
System_CAPS_protevent SerializeObjectState

Ocurre cuando una excepción se serializa para crear un objeto de estado de excepción que contenga datos serializados sobre la excepción.(Heredado de Exception).

Comentarios

Common language runtime transforma los resultados conocidos de HRESULT en excepciones de .NET Framework, lo que permite objetos COM devuelvan información de errores significativa a los clientes administrados. El resultado HRESULT de una asignación de excepción también funciona en la otra dirección ya que devuelve HRESULT específicos a clientes no administrados. Para obtener detalles de asignación, consulte How to: Map HRESULTs and Exceptions.

Cuando el tiempo de ejecución encuentra un resultado HRESULT desconocido (un valor HRESULT que carece de una excepción específica correspondiente), se produce una instancia de la COMException clase. Esta excepción para todos los fines expone los mismos miembros que cualquier excepción y hereda un complemento público ErrorCode propiedad que contiene el valor HRESULT devuelto por el destinatario. Si un mensaje de error está disponible para el tiempo de ejecución (obtenido de la IErrorInfo interfaz o la Err objeto en Visual Basic o, en algunos casos, del sistema operativo), el mensaje se devuelve al llamador. Sin embargo, si el desarrollador de componentes COM no incluye un mensaje de error, el motor en tiempo de ejecución devuelve el valor HRESULT de ocho dígitos en lugar de una cadena de mensaje. HRESULT permite al llamador determinar la causa de la excepción genérica.

Controlar una excepción de COMException

Los siguientes son algunas consideraciones para la solución de problemas de un COMException excepción.

  • Compruebe el ErrorCode propiedad
    Cuando el tiempo de ejecución encuentra un resultado HRESULT desconocido y produce una COMException excepción, el ErrorCode esta propiedad incluye el mensaje de error o, si un mensaje de error no está disponible, el valor HRESULT de ocho dígitos. El mensaje de error o el valor HRESULT puede ayudarle a determinar la causa de la excepción.

    Para obtener una lista de valores HRESULT, vea Common HRESULT Values.

  • Argumentos de tiempo de ejecución y objetos de Microsoft Office
    Al pasar argumentos de tiempo de ejecución a métodos de objetos de Microsoft Office, un COMException excepción puede producirse cuando los objetos son objetos COM. El enlazador en tiempo de ejecución supone que tales llamadas al método implican un parámetro ByRef y que la propiedad que se pasa tiene un descriptor de acceso set. Si la propiedad no es así, .NET Framework genera un MissingMethodException excepción (con un CORE_E_MISSINGMETHOD HRESULT). Para evitar este comportamiento, utilice los objetos enlazados en tiempo de compilación o pase una variable en lugar de una propiedad del objeto.

  • Visual Studio y el proceso de hospedaje
    COM permite la comunicación entre Visual Studio y la hosting process. Puesto que se utiliza antes de la ejecución de código, una llamada a CoInitializeSecurity hace que se produzca esta excepción.

    En algunos casos, cuando se ejecuta Visual Studio como administrador puede resolver el problema. You can also disable the hosting process.

Iniciar una excepción de COMException

Aunque puede usar el COMException clase para devolver valores HRESULT específicos a clientes no administrados, iniciar una excepción específica de .NET Framework es mejor que el uso de una excepción genérica. Tenga en cuenta que los clientes administrados como los clientes no administrados pueden utilizar el objeto de .NET Framework, y lanzar un valor HRESULT a un llamador administrado es menos comprensible que producir una excepción.

Información de versión

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 1.1
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1

Seguridad para subprocesos

Cualquier miembro ( Compartido en Visual Basic) estático público de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Ver también

Exception
Espacio de nombres System.Runtime.InteropServices
Controlar y generar excepciones

Volver al principio