Обработка исключений COM-взаимодействия

При обработке исключений управляемые и неуправляемые коды могут работать совместно. Если метод порождает исключение в управляемом коде, то среда CLR может передать HRESULT в объект COM. Если сбой метода происходит в неуправляемом коде и возвращается сбой HRESULT, то среда выполнения создает исключение, которое может быть перехвачено управляемым кодом.

Среда выполнения автоматически отображает HRESULT из взаимодействий COM в более конкретные исключения. Например, E_ACCESSDENIED становится UnauthorizedAccessException, E_OUTOFMEMORY становится OutOfMemoryException и т.д.

Если значение HRESULT является пользовательским результатом или неизвестно среде выполнения, то среда выполнения передает клиенту универсальное исключение COMException. Свойство ErrorCode исключения COMException содержит значение HRESULT.

Полное обсуждение взаимодействия COM см. в разделе Расширенное COM-взаимодействие.

Работа с IErrorInfo

При передаче ошибки из COM в управляемый код среда выполнения заносит в объект исключения сведения об ошибке. COM-объекты, поддерживающие IErrorInfo и возвращающие HRESULTS, предоставляют эти сведения в исключения управляемого кода. Например, среда выполнения отображает описание из ошибки COM в свойство исключения Message. Если HRESULT не предоставляет дополнительных сведений об ошибке, то среда выполнения заполняет значительную часть свойств исключения стандартными значениями.

Если сбой метода произошел в неуправляемом коде, то исключение может быть передано в сегмент управляемого кода. В разделе HRESULTS и исключения представлена таблица, в которой показано сопоставление HRESULTS с объектами исключений среды выполнения.

См. также

Основные понятия

Обработка и создание исключений

Другие ресурсы

Расширенное COM-взаимодействие