Объект Err

Обработка ошибок, инструкция On Error

End Sub

End If

Exit Sub

End If

Exit Sub

x = CDbl (Число)

If CDbl (Число) = 0 Then

MsgBox "Деление на ноль запрещено!", vbExclamation, _

"Обратное число "

y = 1/x

MsgBox "Обратное число:" & y

Попробуем теперь решить эту проблему с помощью перехвата ошибок и их обработки. Для этого предназначена инструкция On Error.

Инструкция On Error может быть записана следующим образом:

Инструкция Описание
On Error GoTo строка В случае возникновении ошибки управление передается в строку с указанным номером или меткой.
On Error Resume Next В случае возникновении ошибки управление передается в следующую строку. При обращении к объектам лучше использовать этот синтаксис, нежели предыдущий. Инструкция Resume допустима в следующих синтаксисах: q Resume – управление передается той инструкции, в которой произошла ошибка. Пример: On Error Resume q Resume строка – управление передается в строку с указанным номером или меткой. Пример: On Error Resume m1 – управление передается в строку с меткой m1. q Resume Next – см. выше.
On Error GoTo 0 Отключает обработчик ошибок в текущей процедуре.

Процедура обработки ошибок обычно включает объект Err, который содержит всю информацию о последней ошибке.

Рассмотрим два важнейших свойства объекта Err:

Свойство Описание
Number Возвращает код ошибки.
Description Возвращает текст сообщения об ошибке

Пример:

ОбработкаОшибок:

MsgBox "Произошла ошибка: " & Cstr(Err.Number) & “-“ & _

Err.Description, vbInformation, “Cообщение об ошибке”

Объект Err имеет свои методы:

Метод Описание
Clear Очищает все значения свойств объекта Err.
Raise Создает ошибку выполнения. Используется при моделировании ошибок.

Напишем программу ОбратноеЧислоError, в которой ошибки обрабатываются с помощью конструкции On Error.

1) Sub ОбратноеЧислоError ()
2) Dim x As Double
3) Dim y As Double
4) Dim Число As String
5) ‘Передача управления на обработчик ошибок, помеченный _ меткой Ошибка:
6) On Error GoTo Ошибка
7) x = CDbl(InputBox("Введите число:"))
8) y = 1 / x
9) MsgBox "Обратное число:" & y
10) Exit Sub
11) ‘Обработчик ошибок
12) Ошибка:
13) MsgBox "Произошла ошибка: " & Cstr(Err.Number) & “-“ & _ Err.Description, vbInformation, “Cообщение об ошибке”
14) Select Case Err.Number
15) Case 11
16) MsgBox "Деление на ноль запрещено!", vbExclamation, _ "Обратное число "
17) Case 13
18) MsgBox "Некорректный ввод исходного значения!", _ vbExclamation, "Обратное число"
19) Case Else
20) MsgBox "Непредвиденная ошибка!", _ vbExclamation, "Обратное число"
21) End Select
22) End Sub

Обратите внимание на 10-ю строку кода, которая обеспечивает выход из процедуры перед активизацией обработчика ошибок. В случае её отсутствия управление передается на следующую команду, т.е. будет выведено сообщение об ошибке, даже если её и нет.

13-я строка кода приведена лишь в учебных целях, для неискушенного пользователя она не понятна!


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: