Ошибки, возникающие во время выполнения программы.
Это ошибки, возникающие во время работы программы (например, при выполнении деления на ноль или при попытки чтения из несуществующего на диске файла). В таких случаях выводится сообщение в специальном окне, в котором указывается причина прерывания программы и номер ошибки. На этом окне есть четыре кнопки «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. Коды основных ошибок
Код ошибки | Ошибка выполнения |
Переполнение | |
Мало памяти | |
Деление на ноль | |
Несовпадение типов | |
Подпрограмма или функция не заданны | |
Файл не найден | |
Файл уже открыт | |
Ошибка устройств ввода-вывода | |
Ошибка доступа к файлу |
Дата добавления: 2016-02-11; просмотров: 693;