Здесь есть две вещи, которые могут пойти не так.
Опция 1
Во-первых, некоторый «очень плохой код» может вызвать короткое замыкание раскрутки стека вызовов при исключениях.Например, ApplyUpdates
или одна из его дочерних подпрограмм может также иметь блок try...except
, который напрямую вызывает Application.HandleException
.
Чтобы проверить это, если вы ставите точку останова на QryCmdPerf.Close
, достигаете ли вы ее?
Если нет, то Application.HandleException
(или хуже Application.ShowException
) был вызван напрямую.
Для решения этой проблемы требуется специальный обработчик исключений, подключенный к событию Application.OnException.Возможно, вам придется установить временное состояние, чтобы знать, когда это исключение можно игнорировать.
Да, это грязно, поэтому прямой вызов Application.HandleException
- это "очень плохой код".
Опция 2
Если вы достигли точки останова, но исключение вызывается снова, тогда решить его будет намного проще.
Метод Close
, вероятно, пытается сохранить любые ожидающие изменения, поэтомуэффективно применяя обновления снова.Вместо того, чтобы просто закрывать набор данных, вызовите CancelChanges
или эквивалентный.