| Предыдущий | Следующий |
| 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.
Нужно найти другой код? Найти другой код состояния или ошибки.