Лекция 3: 2 Для создания возможности использования объектов файловой системы нужно подключить библиотеку DLL, содержащую эти объекты: меню Разработать > Ccылки > Microsoft Scriptlet Component (сделать щелчок на соответствующем элементе управления CheckBox). Не могу найти меню Разработать (Develop)>Links и т.д. |
Опубликован: 04.07.2006 | Уровень: для всех | Доступ: свободно
Лекция 8:
Элементы работы с классами. Кратко об отладке программ
Кратко об отладке программ
Общие сведения
Рассматриваются следующие группы ошибок:
- синтаксические, при обнаружении которых выводится пояснение. При выводе кода строка с синтаксической ошибкой выделяется красным цветом. Проверку синтаксиса можно включать/отключать следующим образом: меню Инструменты Параметры Editor Auto Syntex Check. Эффективно использование контекстной подсказки QuickInfo с полным синтаксисом вводимых оператора, функции, метода, процедуры. При необходимости ее можно отключить: меню Инструменты Параметры Editor AutoQuickInfo,
- ошибки в структуре программы. Они обнаруживаются при компиляции проекта: меню Запуск Start With Full Compile и при создании выполняемого файла: Файл Make*. EXE,
- логические - результатом работы программы является ошибочный результат,
- ошибки периода выполнения. При создании приложений нужно предусматривать перехват ошибок такого рода.
Обработка ошибок времени выполнения
Обработчик ошибок состоит из 3-х частей: оператор On Error GoTo в начале подпрограммы/функции, который сообщает, что следует предпринять при возникновении ошибки, код обработчика и оператор выхода из обработчика, указывающий, куда перейти после обработки ошибки; в этом отношении рассмативаются следующие варианты:
- использование команды Resume для возврата в точку возникновения ошибки и повторное выполнение этой команды,
- использование команды Resume Next для продолжения работы со строки, следущей за строкой с ошибкой,
- использование команды Resume (метка) для продолжения работы со строки с указанной меткой,
- использование команды Exit Sub/Function для выхода из программы/функции.
Практическая работа 50. Обработчики ошибок
А. Структура обработчика ошибок
- Создать командную кнопку (Caption = Structure, Resume Next), рис. 8.2,
- ввести код, данный ниже, пояснения даны под комментариями, стартовать проект. После щелчка на командной кнопке выводится номер ошибки и пояснение.
Private Sub Command1_Click() ' в случае ошибки перейти к локальному обработчику ошибок On Error GoTo LocalHandler Dim x As Byte, str As String ' описание переменных ' задать значение х, не соответствующее описанному выше ' типу данных X = -7 GoTo LocalExit ' выйти из процедуры, если ошибки не было LocalHandler: ' простейший обработчик выводит номер ошибки и пояснения str = CStr(Err.Number) & " - " & Err.Description MsgBox str, vbCritical, " Command1" Resume Next ' продолжить выполнение со следующей строки LocalExit: End Sub
В. Использование команды Resume.
Использование команды Resume приводит к повторному выполнению строки, содержащей ошибку; команду целесообразно использовать, если есть уверенность, что ошибка исправима.
- Создать вторую командную кнопку (Caption = Resume), рис. 8.2,
- ввести код, данный ниже; стартовать проект, в выведенное после старта проекта диалоговое окно InputBox ввести - 7; выводится сообщение об ошибке. Выполнение программы начинается с повторного ввода данных в диалоговое окно InputBox; ввести число 7 - ошибка исправлена.
Private Sub Command2_Click() ' в случае ошибки перейти к локальному обработчику ошибок On Error GoTo LocalHandler Dim x As Byte, str As String ' описание переменных ' ввести число, не соответствующее описанному выше типу ' данных х = InputBox("Enter a Byte") GoTo LocalExit ' выйти из процедуры, если ошибки не было LocalHandler: ' обработчик выводит номер ошибки и пояснение str = CStr(Err.Number) & "-" & Err.Description MsgBox str, vbCritical, "Command2" ' продолжить выполнение cо строки, содержавшей ошибку Resume LocalExit: End Sub
С. Использование команд Resume Next и Resume.
Resume Next целесообразно использовать, если пользователь уверен, что программма будет эффективно работать после устранения ошибки.
- Создать третью командную кнопку (Caption = Resume Next, Resume), рис. 8.2,
- ввести код, данный ниже; стартовать проект ввести в выводимое после старта проекта окно InputBox - 7; в выведенном диалоговом окне MsgBox сделать щелчок на кнопке "YES"; введeнное число (егo тип не соответствут описанию, данному в коде) будет заменено числом 25. Повторно сделать щелчок на третьей командной кнопке, ввести в окно InputBox - 7, сделать щелчок на кнопке "NO" (что означает "не заменять введeнное число - 7 на число 25") в выведенном диалоговом окне MsgBox; на экран повторно выводится диалоговое окно InputBox, ввести число (тип данных Byte): 7, рис. 8.2.
Private Sub Command3_Click() On Error GoTo LocalHandler Dim x As Byte, str As String, mess As Long x = InputBox("Enter a Byte") MsgBox "x = " + CStr(x) GoTo LocalExit LocalHandler: If Err.Number = 6 Then str = "You have entered not Byte:" & vbCrLf str = str & "The program will now set 25." & vbCrLf ' выбрать YES, чтобы программно было установлено ' значение 25 str = str & "Select YES to set 25." & vbCrLf ' выбрать NO, чтобы вновь вернуться к вводу числа str = str & "NO - to return to enter a new value." mess = MsgBox(str, vbCritical + vbYesNo, "Command3") If mess = vbYes Then x = 25 Resume Next Else Resume End If End If LocalExit: End Sub