Comparteix a través de


Control de excepciones de interoperabilidad COM

El código administrado y no administrado puede funcionar conjuntamente para controlar las 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 se produce un error en un método en código no administrado devolviendo un error HRESULT, el tiempo de ejecución produce una excepción que el código administrado puede detectar.

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

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

Trabajar con IErrorInfo

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

Si se produce un error en un método en código no administrado, se puede pasar una excepción a un segmento de código administrado. El tema HRESULTS y excepciones contiene una tabla que muestra cómo HRESULTS se asignan a objetos de excepciones en tiempo de ejecución.

Consulte también