Controlar excepciones de interoperabilidad COM

Actualización: noviembre 2007

El código administrado y el no administrado pueden funcionar juntos para controlar excepciones. Si un método produce una excepción en código administrado, Common Language Runtime puede pasar un HRESULT a un objeto COM. Si un método produce un error en código no administrado y devuelve un HRESULT de error, el tiempo de ejecución produce una excepción que se puede detectar mediante código administrado.

El tiempo de ejecución asigna automáticamente el HRESULT de la interoperabilidad COM a las excepciones más específicas. Por ejemplo, E_ACCESSDENIED se convierte en UnauthorizedAccessException, E_OUTOFMEMORY se convierte en OutOfMemoryException, etc.

Si el valor de HRESULT es un resultado personalizado o es desconocido para el tiempo de ejecución, el tiempo de ejecución pasa una COMException genérica al cliente. La propiedad ErrorCode de COMException contiene el valor HRESULT.

Para obtener más información sobre la interoperabilidad de COM, vea Interoperabilidad COM avanzada.

Trabajar con IErrorInfo

Cuando se pasa un error de COM al código administrado, el motor en tiempo de ejecución llena el objeto de excepción con información de error. Los objetos COM que son compatibles con IErrorInfo y devuelven HRESULTS proporcionan esta información a las excepciones de código administrado. Por ejemplo, el tiempo de ejecución asigna la descripción del error COM a la propiedad Message de la excepción. Si el HRESULT no proporciona información de error adicional, el tiempo de ejecución rellena muchas de las propiedades de la excepción con valores predeterminados.

Si se produce un error en código no administrado, se puede pasar una excepción a un segmento de código administrado. En el tema Resultados HRESULTS y excepciones hay una tabla que muestra cómo se asignan los HRESULTS a los objetos de excepción del motor en tiempo de ejecución.

Vea también

Otros recursos

Interoperabilidad COM avanzada

Controlar y generar excepciones