Файл: Освой самостоятельно программирование для MS Access 2002 за 24 часа [П.Киммел].pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 21.10.2020

Просмотров: 7862

Скачиваний: 25

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

Else

' Файла нет, но надо что-то сделать

End If

Функция Assert поможет при тестировании программы на этапе ее разработки, а

условная конструкция

 End

 позволит приложению сохранить работоспособ-

ность даже в том случае, если отладочный код во время компиляции был исключен.

Резюме

Программирование — нелегкий хлеб. Даже если ваш опыт относительно невелик

(а может быть, именно поэтому), вам наверняка приходилось тратить целые часы на
решение каких-то, на первый взгляд, незначительных задач. Залог профессионального
взросления — настойчивость в освоении передовых технологий, последовательность в
их применении и практика.

На этом занятии вы изучили некоторые способы, которые помогут избавиться от

ошибок в программах. Применяйте их правильно — и вы станете профессионалом.

Правила таковы: старайтесь по возможности упрощать код, создавайте отладочный

код одновременно с основным, не удаляйте отладочные конструкции из текста —
пользуйтесь условными директивами компилятора для их включения или отключения.

Стратегии тестирования и отладки, рассмотренные нами, прошли проверку време-

нем и доказали свою эффективность. Применяя их в сочетании с мощными средства-
ми интегрированной среды программирования Visual Basic, вы добьетесь успеха, не

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

Существует притча о том, как один вызывающе праздный турист, бродя по Нью-

Йорку, обратился к замученному жизнью полисмену с вопросом: "Как

 до

 Тот, почесав затылок, процедил сквозь зубы: "Тренируйся,

Практикуйтесь и вы в использовании рассмотренных приемов — и программирование
станет не только работой, но и источником радостей. А теперь, чтобы все-таки дотащиться

до своего

 ознакомьтесь с разделами "Вопросы и ответы" и "Задания".

Вопросы и ответы

Вопрос. Имеются ли в составе библиотек классов

 встроенные отладочные функции?

Ответ.

 Да. Класс Debug содержит два метода, предназначенных для подобных це-

лей, — Print и Assert. Print оказывается полезным при реализации функции трас-

сировки, a Assert предназначен для верификации условий. Я рекомендую использо-
вать оба метода в виде отдельных процедур. В этом случае вы сможете легко настраи-
вать интерфейс и при необходимости удалять отладочный код из исполняемой версии

приложения с помощью условных директив компилятора.

Вопрос. Почему нельзя передать отладочной процедуре параметр, содержащий номер

строки исходного текста программы?

Ответ.

 Да это было бы просто здорово! К сожалению, в VBA не поддерживается

механизм

 отслеживания номеров строк.

Вопрос. Можно ли построить дополнительные отладочные процедуры для облегчения

тестирования?

Ответ.

 Конечно. Я, например, уже несколько лет пользуюсь двумя версиями

функции Trace: одна выводит информацию в диалоговое окно, а другая — в тексто-

 Часть

 Работа над ошибками


background image

вый журнальный файл. Последняя особенно необходима, поскольку дает возможность

позже внимательно проанализировать ход выполнения программы.

Вопрос. Что вы можете сказать по поводу сохранения отчета о результатах отладки в

базе данных?

Ответ.

 Здравая мысль. Конечно, скорость работы программы при этом несколько

снизится, но результат оправдывает подобные потери. Собственно говоря, аналогич-

ный механизм реализован Microsoft в операционной системе Windows 2000. Сохранив

отчет о результатах тестирования в базе данных, затем можно, например, легко преоб-

разовать системные сообщения об ошибках в предложения общедоступного языка.

Задания

Ниже приведены тестовые задания и упражнения, которые помогут вам самостоя-

тельно проверить уровень освоения материала, изложенного в этой главе. Ответы на

вопросы вы найдете в приложении.

Тесты

1. Как называется класс, содержащий основные программные средства отладки?

2. Какие методы, полезные во время тестирования, предлагаются классом, упомяну-

тым в предыдущем вопросе?

3. Какие цели преследует трассировка?
4. Следует ли удалять отладочный код из окончательной версии приложения с помо-

щью редактора или условных директив компилятора?

1. Напишите функцию, возвращающую значение True или False в зависимости от

того, существует ли файл с заданным именем.

2. Создайте тестовый код, использующий обращения к функции, построенной при

выполнении

3. Разработайте версию процедуры Trace, предусматривающую вывод информации в

текстовый файл.

17-й час. Отладка кода


background image

background image

 час

Обработка

ошибок во время

выполнения программы

На прошлом занятии вы научились предотвращать, находить и устранять такие

ошибки, которые принято называть термином

 bug,

 — в их появлении целиком пови-

нен сам программист. Теперь мы рассмотрим приемы обработки ошибок другого ро-

да. Важно понимать их существенные различия. Если в первом случае недостатки на-
ходятся в самом коде (из-за неверной реализации алгоритмов, неправильного исполь-

зования объектов данных и т.д.), то во втором проблемы могут возникать, скажем, по

причине ввода неправильных данных пользователем. (Да-да, пользователи — живые

люди, и им свойственно совершать ошибки.)

В иных ситуациях пользователь попытается открыть ранее удаленный файл, на

диске может не хватить свободного места либо соединение с Internet окажется

"сброшенным". Подобные проблемы называют ошибками периода выполнения, и на

этом занятии вы научитесь с ними справляться.

Если в области программирования эта книга — ваш первый опыт, текущая глава

определенно для вас. То же самое можно сказать и в случае, если программированием

приходилось заниматься относительно давно — может быть, лет пять или шесть назад.
С тех пор приемы борьбы с ошибками значительно изменились и получили сущест-
венное развитие. Вы узнаете, как писать устойчивый, "живучий" код, используя са-

мые современные технологии обработки ошибок периода выполнения.

Основные темы занятия.

Исключительные ситуации.

Создание программных обработчиков ошибок.

Создание

 блоков.

Использование объектов класса Err.


background image

Новый термин

Сравнение технологий обработки ошибок

Когда я был студентом колледжа, нас учили, что обработка ошибок в программе со-

пряжена с построением наборов управляющих структур для проверки фактов выполне-

ния тех или иных условий. Главная идея заключалась в том, что программист, присту-

пая к решению конкретной задачи, должен был построить ряд условных выражений,

 убедиться в правильности исходных данных и надлежащем состоянии кода. Такой

подход нельзя назвать абсолютно неправильным и непродуктивным — просто он соот-

ветствовал прежнему состоянию развития технологий и уровню понимания проблем

программирования. К тому времени уже появилась и другая технология обработки оши-

бок, связанная с отслеживанием так называемых исключительных ситуаций, но она еще

не поддерживалась большинством основных языков и систем программирования.

Исключительная ситуация,

 или

 исключение, —

 это условие, приводящее к

возникновению ошибки, а

 обработчик исключений —

 программный код,

позволяющий обнаружить ошибку и устранить ее последствия.

С тех пор понятие надежности и устойчивости кода в сообществе программистов

(и в индустрии программного обеспечения в целом) существенно изменилось. Теперь

"живучим" называют код, в котором для борьбы с ошибками применяются обработ-

чики исключений, а не условные конструкции. Это не значит, что код обработки ис-

ключений используется всеми и во всех возможных случаях, — просто данная техно-

логия более предпочтительна. Но прежде мы все-таки рассмотрим традиционные спо-

собы обработки ошибок, предусматривающие применение условных конструкций.

Обработка ошибок с помощью условных

выражений: старый подход

Этот подход подразумевает предварительное включение в код целого набора ус-

ловных конструкций для тестирования ситуаций, потенциально грозящих возникно-

вением ошибок. На этапе проектирования и кодирования сложно учесть абсолютно

все возможные условия — одни из них могут выпасть из рассмотрения случайно,

другие на момент написания программы зачастую просто неизвестны.

Еще один немаловажный фактор таков: программист, заранее предусматривающий

различные нестандартные ситуации, склонен предполагать, что ошибки обязательно

произойдут. Он насыщает код таким количеством проверок, что это не может не

ухудшить производительности приложения — все дополнительные программные ин-

струкции выполняются даже в том случае, когда в действительности все в порядке.

Если какая-либо из ситуаций, приводящих к возникновению ошибки, оказывается

неучтенной, программа просто (говоря молодежным сленгом) "падает". Она либо

прекращает реагировать на действия пользователя, либо приводит к зависанию или

перезагрузке компьютера. Но шутки становятся неуместными, если авария программы

сопровождается еще и потерей или повреждением данных.

Программист в таком случае обычно не может знать обо всех истинных причинах

ошибки, поэтому лучший способ ее исправления — размышления и поиски.

Обработка исключений: современная

технология

Обработка исключений основывается на совершенно ином подходе. Идея, лежа-

щая в его основе, заключается в написании кода, "отлавливающего" ошибки только в

том случае, когда они действительно происходят. Обработчики исключительных си-

туаций обеспечивают реакцию на все ошибки — без каких-либо "исключений".

 Часть VI. Работа над ошибками