Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Código gerido e não gerido podem trabalhar em conjunto para lidar com exceções. Se um método lançar uma exceção em código gerido, o runtime da linguagem comum pode passar um HRESULT para um objeto COM. Se um método falhar em código não gerido ao devolver um HRESULT falhado, o runtime lança uma exceção que pode ser detetada pelo código gerido.
O runtime mapeia automaticamente o HRESULT da interoperabilidade COM para exceções mais específicas. Por exemplo, E_ACCESSDENIED torna-se UnauthorizedAccessException, E_OUTOFMEMORY torna-se OutOfMemoryException, e assim sucessivamente.
Se o HRESULT for um resultado personalizado ou desconhecido para o tempo de execução, este passa um genérico COMException para o cliente. A propriedade ErrorCode da COMException contém o valor HRESULT.
Trabalhar com o IErrorInfo
Quando um erro é passado do COM para o código gerido, o runtime preenche o objeto de exceção com informação de erro. Os objetos COM que suportam IErrorInfo e devolvem HRESULTS fornecem esta informação às exceções de código gerido. Por exemplo, o runtime mapeia a Descrição do erro COM para a propriedade da exceção Message. Se o HRESULT não fornecer informação adicional de erro, o runtime preenche muitas das propriedades da exceção com valores padrão.
Se um método falhar em código não gerido, uma exceção pode ser passada a um segmento de código gerido. O tópico HRESULTS e Exceções contém uma tabela que mostra como os HRESULTS mapeiam para objetos de exceção em tempo de execução.