Compartilhar via


Tratamento de exceções de interoperabilidade COM

O código gerenciado e não gerenciado pode funcionar em conjunto para lidar com exceções. Se um método gerar uma exceção no código gerenciado, o common language runtime poderá passar um HRESULT para um objeto COM. Se um método falhar no código não gerenciado retornando uma falha HRESULT, o runtime gerará uma exceção que pode ser capturada pelo código gerenciado.

O runtime mapeia automaticamente o HRESULT da interoperabilidade COM para exceções mais específicas. Por exemplo, E_ACCESSDENIED se torna UnauthorizedAccessException, E_OUTOFMEMORY se torna OutOfMemoryExceptione assim por diante.

Se o HRESULT for um resultado personalizado ou desconhecido para o tempo de execução, o tempo de execução passa um valor genérico COMException para o cliente. A propriedade ErrorCode da COMException contém o valor HRESULT.

Trabalhando com IErrorInfo

Quando um erro é passado de COM para código gerenciado, o runtime preenche o objeto de exceção com informações de erro. Objetos COM que dão suporte a IErrorInfo e retornam HRESULTS fornecem essas informações para exceções de código gerenciado. Por exemplo, o runtime associa a descrição do erro COM à propriedade da exceção Message. Se o HRESULT não fornecer informações de erro adicionais, o runtime preencherá muitas das propriedades da exceção com valores padrão.

Se um método falhar no código não gerenciado, uma exceção poderá ser passada para um segmento de código gerenciado. O tópico HRESULTS e Exceções contém uma tabela que mostra como os HRESULTS são mapeados para objetos de exceção em tempo de execução.

Consulte também