Что означает код HRESULT 0x80020009 (DISP_E_EXCEPTION)?

 
Предыдущий Следующий
DISP_E_BADVARTYPE DISP_E_OVERFLOW

DISP_E_EXCEPTION

Что означает DISP_E_EXCEPTION

DISP_E_EXCEPTION (0x80020009) — Возникло исключение.

Результат 0x80020009 пришёл из подсистемы «COM Automation» при работе с областью «IDispatch, сопоставление имён, аргументы VARIANT и локаль». Для сообщения «возникло исключение» практический предмет проверки — «exception».

Что проверить и как подтвердить исправление

Не начинайте с общего сброса компонента: сопоставьте первый отказ с фактическими параметрами операции. При 0x80020009 и условии «возникло исключение» воспроизведите отказ на минимальном объекте и меняйте только одно условие за запуск, чтобы отделить неверный вход от состояния системы.

Диагностика 0x80020009 должна включать DISPID, имя члена, LCID, число и типы аргументов, DISPPARAMS, EXCEPINFO и argErr; отдельно запишите HRESULT, IDispatch::Invoke, EXCEPINFO, LCID, VARIANT. Для темы «exception» при 0x80020009 важны значения именно на первом отказе, а не после обработки ошибки верхним уровнем.

Коррекция для 0x80020009 должна быть предметной: приведите число, порядок и типы аргументов к описанию вызываемого члена; сохраните EXCEPINFO до следующего COM-вызова. Для 0x80020009 и сообщения «возникло исключение» общий сброс допустим лишь как контроль, но не как доказательство причины.

После исправления повторите тот же вызов на прежних данных; у результата 0x80020009 должен измениться первый неуспешный этап, а не только последующее сообщение.

Документация для результата 0x80020009: VARIANT structure · VariantClear · IDispatch::Invoke.


Нужно найти другой код? Найти другой код состояния или ошибки.