Опубликован: 04.07.2006 | Уровень: для всех | Доступ: свободно
Лекция 8:

Элементы работы с классами. Кратко об отладке программ

Кратко об отладке программ

Общие сведения

Рассматриваются следующие группы ошибок:

  1. синтаксические, при обнаружении которых выводится пояснение. При выводе кода строка с синтаксической ошибкой выделяется красным цветом. Проверку синтаксиса можно включать/отключать следующим образом: меню Инструменты \to Параметры \to Editor \to Auto Syntex Check. Эффективно использование контекстной подсказки QuickInfo с полным синтаксисом вводимых оператора, функции, метода, процедуры. При необходимости ее можно отключить: меню Инструменты \to Параметры \to Editor \to AutoQuickInfo,
  2. ошибки в структуре программы. Они обнаруживаются при компиляции проекта: меню Запуск \to Start \to With Full Compile и при создании выполняемого файла: Файл \to Make*. EXE,
  3. логические - результатом работы программы является ошибочный результат,
  4. ошибки периода выполнения. При создании приложений нужно предусматривать перехват ошибок такого рода.
Обработка ошибок времени выполнения

Обработчик ошибок состоит из 3-х частей: оператор On Error GoTo в начале подпрограммы/функции, который сообщает, что следует предпринять при возникновении ошибки, код обработчика и оператор выхода из обработчика, указывающий, куда перейти после обработки ошибки; в этом отношении рассмативаются следующие варианты:

  • использование команды Resume для возврата в точку возникновения ошибки и повторное выполнение этой команды,
  • использование команды Resume Next для продолжения работы со строки, следущей за строкой с ошибкой,
  • использование команды Resume (метка) для продолжения работы со строки с указанной меткой,
  • использование команды Exit Sub/Function для выхода из программы/функции.
Практическая работа 50. Обработчики ошибок
А. Структура обработчика ошибок
  1. Создать командную кнопку (Caption = Structure, Resume Next), рис. 8.2,
  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
Обработчики ошибок

Рис. 8.2. Обработчики ошибок
Константин Новков
Константин Новков
Как подключить библиотеку DLL ?
антонина квасова
антонина квасова
Что реализует инструкция Open - Open "a:\t.txt" For Output As #1