Типы ошибок и методы отладки программ.
Синтаксические ошибки.
Причиной таких ошибок могут быть неправильно написанные ключевые слова, неверно примененные разделители или недопустимые комбинации операторов. Такие ошибки Visual Basic распознает сразу после того, как курсор покидает только что написанную строку. Строка с синтаксической ошибкой выделяется красным цветом. После устранения ошибки выделение цветом снимается.
Visual Basic имеет средства, позволяющие не только обнаружить синтаксическую ошибку, но и избежать ее в процессе написания кода. К таким средствам относятся
– механизм контекстной подсказки (после написании ключевого слова появляется окно, в котором отображается полный синтаксис вводимого оператора или список аргументов используемой процедуры);
– автоматическое отображение списка элементов (например, после имени элемента управления появляется список всех свойств и методов, из которого можно выбрать требуемое);
– дополнение слова (при вводе нескольких начальных символов, достаточных для распознавания ключевого слова, недостающие символы автоматически добавляются).
Ошибки в структуре программы.
Ошибки такого рода появляется в результате неправильного написания многострочного оператора (например, в операторе цикла For нет последней строки со словом Nextили в уловном операторе If нет End If).
Такие ошибки Visual Basic распознает не в процессе ввода символов, а на этапе компиляции. Сообщение об ошибке выводится в специальном окне и начинается оно словами Compile error («ошибка компиляции») и содержит указание на ошибку (например, Block If without End If – «блок If без End If»).
Ошибки, возникающие во время выполнения программы.
Это ошибки, возникающие во время работы программы (например, при выполнении деления на ноль или при попытки чтения из несуществующего на диске файла). В таких случаях выводится сообщение в специальном окне, в котором указывается причина прерывания программы и номер ошибки. На этом окне есть четыре кнопки «Continue», «End», «Debug» и «Help».
В качестве примера на рис.33 показано окно с сообщением об ошибке деления на ноль.
Рис.33. Вид окна с сообщением об ошибке на этапе выполнения
Из рисунка видно, что надпись на кнопке «Continue» бледнее остальных. Это означает, что при такой ошибке дальнейшее продолжение программы невозможно. Контур кнопки «Debug» выделен жирной линией, это означает, что для перехода в режим отладки эту кнопку можно «нажать» не только с помощью манипулятора «мышь», но и путем нажатия кнопки «Enter» клавиатуры. Нажатие кнопки «End» приведет к завершению программы, а кнопки «Help» – к появлению окна справки с информацией о типе ошибки и возможности ее устранения.
При переходе в режим отладки открывается окно с текстом программы, в которой выделена строка с командой, выполнение которой привело к прерыванию. При этом появляется возможность определить значения переменных на момент выполнения прерывания. Для этого достаточно подвести курсор к имени переменной, в появившемся окошке появится либо ее значение, либо слово «Empty» («пустая»), если на момент выполнения команды переменная не получила никакого значения.
На этапе разработки программы можно предусмотреть перехват возможных ошибок. Это делается с помощью специальной процедуры – обработчика ошибок.
Для перехвата возможной ошибки в исполняемой процедуре используется оператор On Error. В нем указывается метка, которая должна находиться в той же процедуре и помечать тот фрагмент кода, куда будет осуществлен переход при возникновении ошибки выполнения. Обычно этот фрагмент находится в конце процедуры, а перед меткой помещается оператор Exit, благодаря которому процедура завершается, если ошибка не возникла.
Обработка ошибки начинается с установления типа ошибки. Для этого используется объект Err, свойство которого Numberсодержит код последней возникшей ошибки.
После обработки ошибки программа должна продолжить свое исполнение. Для того, чтобы программа продолжала выполняться в строке, в которой возникла ошибка, в обработчике указывается операторResume. Если нужно продолжить программу не с этой, а со следующей строки, используется оператор Resume Next.
В качестве примера рассмотрим процедуру, которая запускается при нажатии кнопки со знаком «/» в проекте «Простой калькулятор» (Лекция №№). При этом число, введенное в текстовое окно Text1 делится на число, введенное в окно Text2, результат заносится в окно Text3. Возможная ошибка – деление на ноль. Обработка ошибки может выглядеть следующим образом.
Private Sub Command3_Click()
On Error GoTo ошибка
X=Val( Text1.Text)
Y=Val( Text2.Text)
Z=X/Y
Text3.Text=Z
Exit Sub
ошибка:
Z= Val (InputBox(“Введите число, не равное нулю”))
Resume
End Sub
Если в программе возможно появление нескольких ошибок, их можно обработать, предварительно определив их код и в зависимости от кода применить тот или иной метод. В табл.11 приведены описания основных ошибок этапа выполнения программы.
Таблица 11. Коды основных ошибок
Код ошибки
| Ошибка выполнения
|
| Переполнение
|
| Мало памяти
|
| Деление на ноль
|
| Несовпадение типов
|
| Подпрограмма или функция не заданны
|
| Файл не найден
|
| Файл уже открыт
|
| Ошибка устройств ввода-вывода
|
| Ошибка доступа к файлу
|
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|