| Предыдущий | Следующий |
| DISP_E_BADVARTYPE | DISP_E_OVERFLOW |
DISP_E_EXCEPTION
Что означает DISP_E_EXCEPTION
DISP_E_EXCEPTION (0x80020009) — IDispatch::Invoke дошёл до вызываемого метода/свойства, а сам компонент сообщил прикладное исключение через EXCEPINFO.
COM Automation позволяет вызывать свойства и методы через IDispatch без жёсткой привязки к vtable-интерфейсу: имя преобразуется в DISPID, а Invoke получает аргументы как VARIANT/DISPPARAMS. Поэтому для DISP_E_* особенно важны конкретный член, DISPID и фактические типы аргументов.
Что проверить
- Скопируйте
EXCEPINFOсразу после Invoke: source, description, help context иscodeмогут содержать более точную причину. - Сохраните DISPID и аргументы, но не логируйте секреты из VARIANT.
- Не заменяйте этот HRESULT общим «ошибка COM», пока не разобрана информация, которую вернул сам server.
Что делать
Исправление определяется содержимым EXCEPINFO и контрактом конкретного Automation-члена; код DISP_E_EXCEPTION лишь сообщает способ передачи этой ошибки.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.