Access 2002

Реализация стека вызовов


Эта информация может быть полезна при отладке приложений. Если же пользователь получил сообщение о непонятной ему ошибке, когда вас нет поблизости, он может сохранить эту информацию в текстовом файле, щелкнув на кнопке Log message То File в правом нижнем углу формы.

Используя такую схему выдачи сообщений об ошибках, вы можете в значительной степени уменьшить сложность своей программы благодаря единому подходу к обработке типовых ошибок, номера которых хранятся в специальной таблице. Кроме того, сообщая о конкретной ошибке, всегда можно заменить данные из этой таблицы информацией, специфической для конкретного случая.

При отладке выполняемой процедуры можно выбрать в меню View команду Calls, чтобы увидеть, какая функция вызвала ошибку и откуда она была вызвана. К сожалению, в Access нет методов получения подобной информации программным путем. Однако при возникновении неожиданной ошибки полезно сохранить в файле журнала информацию о том, какой именно код выполнялся в этой точке и как программа достигла этой точки. Раз такую информацию нельзя получить от Access, приходится вести свой собственный учет вызовов процедур.

Чтобы помочь вам в этом, мы разработали несколько полезных классов. С помощью классов Procedure и ProcedureStack мы реализовали свой собственный стек вызовов, параллельный внутреннему стеку VBA. Однако сами по себе эти классы не могут следить за ходом работы вашей программы и фиксировать в своих объектах выполняемые ею вызовы, и, конечно, этого не будет делать VBA. Поэтому в свои процедуры и функции вам придется добавить код помещения их имен в наш пользовательский стек. В листингах 12.15 и 12.16 приведены описания классов Procedure и ProcedureStack.

Для работы нашего стека на выходе из каждой процедуры приложения обязательно должен вызываться метод ExitProc. Поэтому лучше строить свой код так, чтобы у каждой процедуры была только одна точка выхода.

Комментарии закрыты