Файл: Освой самостоятельно программирование для MS Access 2002 за 24 часа [П.Киммел].pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 21.10.2020
Просмотров: 7862
Скачиваний: 25

Else
' Файла нет, но надо что-то сделать
End If
Функция Assert поможет при тестировании программы на этапе ее разработки, а
условная конструкция
End
позволит приложению сохранить работоспособ-
ность даже в том случае, если отладочный код во время компиляции был исключен.
Резюме
Программирование — нелегкий хлеб. Даже если ваш опыт относительно невелик
(а может быть, именно поэтому), вам наверняка приходилось тратить целые часы на
решение каких-то, на первый взгляд, незначительных задач. Залог профессионального
взросления — настойчивость в освоении передовых технологий, последовательность в
их применении и практика.
На этом занятии вы изучили некоторые способы, которые помогут избавиться от
ошибок в программах. Применяйте их правильно — и вы станете профессионалом.
Правила таковы: старайтесь по возможности упрощать код, создавайте отладочный
код одновременно с основным, не удаляйте отладочные конструкции из текста —
пользуйтесь условными директивами компилятора для их включения или отключения.
Стратегии тестирования и отладки, рассмотренные нами, прошли проверку време-
нем и доказали свою эффективность. Применяя их в сочетании с мощными средства-
ми интегрированной среды программирования Visual Basic, вы добьетесь успеха, не
прикладывая чрезмерных усилий. Вы сразу заметите собственный прогресс — ошибок
времени компиляции станет меньше, задача тестирования облегчится, и в результате
ваши пользователи получат более совершенное программное обеспечение.
Существует притча о том, как один вызывающе праздный турист, бродя по Нью-
Йорку, обратился к замученному жизнью полисмену с вопросом: "Как
до
Тот, почесав затылок, процедил сквозь зубы: "Тренируйся,
Практикуйтесь и вы в использовании рассмотренных приемов — и программирование
станет не только работой, но и источником радостей. А теперь, чтобы все-таки дотащиться
до своего
ознакомьтесь с разделами "Вопросы и ответы" и "Задания".
Вопросы и ответы
Вопрос. Имеются ли в составе библиотек классов
встроенные отладочные функции?
Ответ.
Да. Класс Debug содержит два метода, предназначенных для подобных це-
лей, — Print и Assert. Print оказывается полезным при реализации функции трас-
сировки, a Assert предназначен для верификации условий. Я рекомендую использо-
вать оба метода в виде отдельных процедур. В этом случае вы сможете легко настраи-
вать интерфейс и при необходимости удалять отладочный код из исполняемой версии
приложения с помощью условных директив компилятора.
Вопрос. Почему нельзя передать отладочной процедуре параметр, содержащий номер
строки исходного текста программы?
Ответ.
Да это было бы просто здорово! К сожалению, в VBA не поддерживается
механизм
отслеживания номеров строк.
Вопрос. Можно ли построить дополнительные отладочные процедуры для облегчения
тестирования?
Ответ.
Конечно. Я, например, уже несколько лет пользуюсь двумя версиями
функции Trace: одна выводит информацию в диалоговое окно, а другая — в тексто-
Часть
Работа над ошибками

вый журнальный файл. Последняя особенно необходима, поскольку дает возможность
позже внимательно проанализировать ход выполнения программы.
Вопрос. Что вы можете сказать по поводу сохранения отчета о результатах отладки в
базе данных?
Ответ.
Здравая мысль. Конечно, скорость работы программы при этом несколько
снизится, но результат оправдывает подобные потери. Собственно говоря, аналогич-
ный механизм реализован Microsoft в операционной системе Windows 2000. Сохранив
отчет о результатах тестирования в базе данных, затем можно, например, легко преоб-
разовать системные сообщения об ошибках в предложения общедоступного языка.
Задания
Ниже приведены тестовые задания и упражнения, которые помогут вам самостоя-
тельно проверить уровень освоения материала, изложенного в этой главе. Ответы на
вопросы вы найдете в приложении.
Тесты
1. Как называется класс, содержащий основные программные средства отладки?
2. Какие методы, полезные во время тестирования, предлагаются классом, упомяну-
тым в предыдущем вопросе?
3. Какие цели преследует трассировка?
4. Следует ли удалять отладочный код из окончательной версии приложения с помо-
щью редактора или условных директив компилятора?
1. Напишите функцию, возвращающую значение True или False в зависимости от
того, существует ли файл с заданным именем.
2. Создайте тестовый код, использующий обращения к функции, построенной при
выполнении
3. Разработайте версию процедуры Trace, предусматривающую вывод информации в
текстовый файл.
17-й час. Отладка кода

час
Обработка
ошибок во время
выполнения программы
На прошлом занятии вы научились предотвращать, находить и устранять такие
ошибки, которые принято называть термином
bug,
— в их появлении целиком пови-
нен сам программист. Теперь мы рассмотрим приемы обработки ошибок другого ро-
да. Важно понимать их существенные различия. Если в первом случае недостатки на-
ходятся в самом коде (из-за неверной реализации алгоритмов, неправильного исполь-
зования объектов данных и т.д.), то во втором проблемы могут возникать, скажем, по
причине ввода неправильных данных пользователем. (Да-да, пользователи — живые
люди, и им свойственно совершать ошибки.)
В иных ситуациях пользователь попытается открыть ранее удаленный файл, на
диске может не хватить свободного места либо соединение с Internet окажется
"сброшенным". Подобные проблемы называют ошибками периода выполнения, и на
этом занятии вы научитесь с ними справляться.
Если в области программирования эта книга — ваш первый опыт, текущая глава
определенно для вас. То же самое можно сказать и в случае, если программированием
приходилось заниматься относительно давно — может быть, лет пять или шесть назад.
С тех пор приемы борьбы с ошибками значительно изменились и получили сущест-
венное развитие. Вы узнаете, как писать устойчивый, "живучий" код, используя са-
мые современные технологии обработки ошибок периода выполнения.
Основные темы занятия.
Исключительные ситуации.
Создание программных обработчиков ошибок.
Создание
блоков.
Использование объектов класса Err.

Новый термин
Сравнение технологий обработки ошибок
Когда я был студентом колледжа, нас учили, что обработка ошибок в программе со-
пряжена с построением наборов управляющих структур для проверки фактов выполне-
ния тех или иных условий. Главная идея заключалась в том, что программист, присту-
пая к решению конкретной задачи, должен был построить ряд условных выражений,
убедиться в правильности исходных данных и надлежащем состоянии кода. Такой
подход нельзя назвать абсолютно неправильным и непродуктивным — просто он соот-
ветствовал прежнему состоянию развития технологий и уровню понимания проблем
программирования. К тому времени уже появилась и другая технология обработки оши-
бок, связанная с отслеживанием так называемых исключительных ситуаций, но она еще
не поддерживалась большинством основных языков и систем программирования.
Исключительная ситуация,
или
исключение, —
это условие, приводящее к
возникновению ошибки, а
обработчик исключений —
программный код,
позволяющий обнаружить ошибку и устранить ее последствия.
С тех пор понятие надежности и устойчивости кода в сообществе программистов
(и в индустрии программного обеспечения в целом) существенно изменилось. Теперь
"живучим" называют код, в котором для борьбы с ошибками применяются обработ-
чики исключений, а не условные конструкции. Это не значит, что код обработки ис-
ключений используется всеми и во всех возможных случаях, — просто данная техно-
логия более предпочтительна. Но прежде мы все-таки рассмотрим традиционные спо-
собы обработки ошибок, предусматривающие применение условных конструкций.
Обработка ошибок с помощью условных
выражений: старый подход
Этот подход подразумевает предварительное включение в код целого набора ус-
ловных конструкций для тестирования ситуаций, потенциально грозящих возникно-
вением ошибок. На этапе проектирования и кодирования сложно учесть абсолютно
все возможные условия — одни из них могут выпасть из рассмотрения случайно,
другие на момент написания программы зачастую просто неизвестны.
Еще один немаловажный фактор таков: программист, заранее предусматривающий
различные нестандартные ситуации, склонен предполагать, что ошибки обязательно
произойдут. Он насыщает код таким количеством проверок, что это не может не
ухудшить производительности приложения — все дополнительные программные ин-
струкции выполняются даже в том случае, когда в действительности все в порядке.
Если какая-либо из ситуаций, приводящих к возникновению ошибки, оказывается
неучтенной, программа просто (говоря молодежным сленгом) "падает". Она либо
прекращает реагировать на действия пользователя, либо приводит к зависанию или
перезагрузке компьютера. Но шутки становятся неуместными, если авария программы
сопровождается еще и потерей или повреждением данных.
Программист в таком случае обычно не может знать обо всех истинных причинах
ошибки, поэтому лучший способ ее исправления — размышления и поиски.
Обработка исключений: современная
технология
Обработка исключений основывается на совершенно ином подходе. Идея, лежа-
щая в его основе, заключается в написании кода, "отлавливающего" ошибки только в
том случае, когда они действительно происходят. Обработчики исключительных си-
туаций обеспечивают реакцию на все ошибки — без каких-либо "исключений".
Часть VI. Работа над ошибками