- •Министерство образования российской федерации
- •М инистерство образования российской федерации
- •Аннотация
- •Содержание
- •Тема 1. Основы программирования
- •Создание, редактирование и запуск программ
- •Переменные, константы и типы данных
- •Управляющие конструкции
- •Управляющая конструкция If…Then позволяет выполнять один или несколько операторов, если условие истинно. Можно использовать однострочный и блочный синтаксис. Например:
- •Тема 2. Введение в модели объектов
- •2.1. Обзор моделей объектов
- •2.2. Автоматизация операций с использованием объектов
- •2.3. Программирование объектов другого приложения
- •Тема 3. Объекты Microsoft Office
- •3.1. Объекты Microsoft Access
- •3.2. Объекты Microsoft Excel
- •3.3. Объекты Microsoft Power Point
- •3.4. Объекты Microsoft Word
- •Тема 4. Меню и панели инструментов
- •4.1. Средства настройки пользовательского интерфейса
- •4.2. Выбор подходящих элементов пользовательского интерфейса
- •4.3. Система меню
- •4.4. Модификация системы меню на этапе разработки
- •4.5. Модификация системы меню в период выполнения
- •4.6. Панели инструментов
- •4.7. Модификация панелей инструментов на этапе разработки
- •4.8. Модификация панелей инструментов в период выполнения
- •Тема 5. Элементы управления на базе ActiveX и диалоговые окна
- •5.1. Разработка нестандартных диалоговых окон
- •5.2. Использование нестандартных диалоговых окон
- •5.3. Работа с элементами управления в документе, листе или на слайде
- •Тема 6. Оптимизация кода
- •6.1. Основные принципы оптимизации кода
- •6.2. Оптимизация кода для Microsoft Excel
- •6.3. Оптимизация кода для Microsoft Word
- •Тема 7. Отладка и обработка ошибок
- •7.1. Создание обработчика ошибок
- •7.2. Иерархия обработчиков ошибок
- •7.3. Тестирование обработчика за счет эмуляции ошибок
- •7.4. Строчная обработка ошибок
- •7.5. Отключение обработки ошибок
- •7.6. Общие принципы отладки
- •7.7. Режимы конструктора, выполнения и прерывания
- •7.8. Окна отладки
- •7.9. Просмотр стека вызовов
- •Тема 8. Разработка приложений для Интернета и Word Wide Web
- •8.1. Термины и концепции, связанные с Интернетом
- •8.2. Работа с гиперссылками
- •8.3. Сохранение документов и объектов в формате html
- •8.4. Элемент средства просмотра Web Microsoft
- •8.5. Элемент управления Internet Transfer
- •Указывать допустимый сервер-заместитель в свойстве AccessType элемента управления Internet Transfer (таблица 8.4);
- •Элемент управления Internet Transfer автоматически настраивается на нужный протокол, заданный в первой части url. Поэтому применение метода OpenUrl или Execute не требует установки свойства Protocol.
- •8.6. Элемент управления WinSock
- •8.7. Создание персонального Web-сервера
- •Тестовые задания для закрепления материала учебного пособия
- •Рекомендуемая литература
- •Б) дополнительная литература
7.3. Тестирование обработчика за счет эмуляции ошибок
Эмуляция ошибок весьма полезна при тестировании программы и обработке ситуаций, эквивалентных ошибке Visual Basic периода выполнения. Чтобы протестировать программу на предмет обработки всех возможных ошибок, может понадобиться сгенерировать некоторые из них прямо в коде. Это позволяет сделать метод Raise объекта Err. Данному методу передается список именованных аргументов, определяющих его действие. Как только встречается оператор Resume, вызывается метод Clear объекта Err. Поэтому, чтобы передать ошибку предыдущему в стеке вызовов обработчику, ее нужно сгенерировать повторно.
Иногда нужно определить нестандартные ошибки в дополнение к тем, что уже определены в Visual Basic. Например, программа, которая полагается на связь через модем, могла бы генерировать ошибку при попадании несущего сигнала. Если необходимо генерировать и перехватывать нестандартные ошибки, необходимо присвоить им соответствующие коды, используя константу vbObjectError как базовое значение. Эта константа резервирует коды предопределенных ошибок в диапазоне от vbObjectError до vbObjectError + 512. Оперируя с кодами, превышающими последнее значение, можно быть уверенным, что они не вызовут конфликтов в будущих версиях Visual Basic. Определив коды нестандартных ошибок, можно использовать их при вызове метода Raise так же, как встроенные. В этом случае свойство Description объекта Err возвращает стандартное описание – «Application-defined or object-defined error» («ошибка, определенная приложением или объектом»). Можно изменить это описание, указав соответствующую строку при вызове метода Raise.
7.4. Строчная обработка ошибок
Проверяя специфическую строку кода, способную привести к ошибке, реализуется строчная обработка ошибок (inline error handing). В таком случае можно писать функции и операторы, возвращающие коды ошибок; генерировать ошибки Visual Basic в вызванных процедурах и обрабатывать их в вызывающих процедурах; создавать функции, которые возвращают тип данных Variant, и использовать эти данные, чтобы сообщить об ошибке вызывающей процедуре.
Есть несколько способов вернуть код ошибки. Простейший – создать функции, возвращающие в случае ошибки ее код. Главное в строчной обработке ошибок – немедленная проверка на ошибку после выполнения каждого оператора или вызова функции. В этом случае можно создать обработчик, рассчитанный на определенную группу ошибок. Такой подход не требует реального появления ошибок периода выполнения.
Другой способ состоит в генерации ошибки Visual Basic в вызываемой процедуре и ее обработке строчным обработчиком ошибок в вызывающей процедуре. Если создана функция, которая при неудаче генерирует ошибку, то оператор On Error Resume Next, добавленный перед вызовом этой функции, в случае ошибки заставляет программу перейти к следующему за вызовом функции оператору, не выполняя подпрограмму обработки ошибок. Оператор On Error Resume Next сопровождается кодом обработки ошибок. Этот код проверяет свойства объекта Err и определяет, была ли ошибка и каков ее номер. Если Err.Number содержит ненулевое значение, значит, произошла ошибка, и программа может предпринять соответствующие действия в зависимости от значения свойств объекта Err. Если функция просто возвращала результат вычисления или код ошибки, вычисленное значение могло бы попасть в диапазон кодов ошибок, и вызывающая процедура не отличила бы ошибку от результата. Еще один способ вернуть информацию об ошибке, построен на особенностях типа данных Variant и связанных с ним функций. В Variant есть метка, которая указывает тип содержащихся в переменной данных; одним из типов может быть код ошибки Visual Basic. Поэтому можно написать функцию, возвращающую значение типа Variant, и использовать его метку, сообщая вызывающей процедуре об ошибке.