Подпрограмма обработки ошибки
Синтаксис 1: On Error GoTo строка - активизирует подпрограмму обработки ошибок, начало которой определяется аргументом. Строка -метка или номер строки.
Синтаксис 2: On Error Resume Next - указывает, что при возникновении ошибки происходит передача управления на инструкцию, непосредственно следующую за инструкцией, где возникла ошибка.
Синтаксис 3: On Error GoTo 0 - отключает любой активизированный обработчик ошибок в текущей процедуре.
Инструкция Resume - обеспечивает процедуре возможность продолжить работу после обработки ошибок.
Синтаксис 1: Resume - после обработки ошибки управление передается той инструкции, в которой произошла ошибка.
Синтаксис 2: Resume строка - после обработки ошибки управление передается инструкции с номером строка (или метка строка).
Синтаксис 3: Resume Next - передается управление инструкции, следующей за инструкцией, в которой произошла ошибка.
Инструкция останавливает выполнение процедуры.
Exit Exit Sub
Exit Function
Exit Property
Подпрограмма обработки ошибки обычно включает объект Err, который содержит информацию об ошибках выполнения.
Некоторые свойства и методы объекта Err:
Свойства: Number - возвращает код ошибки.
Description - возвращает строковое выражение,
содержащее текст сообщения об ошибке.
Метод Clear - очищает все значения свойств Err.
Вернемся к калькулятору: пусть в поле знаменатель не 0, а 1Е-40 -появится ошибка переполнения. В обработке ошибки предусмотрим два отклика: 1. Пользователь информируется программой в случае появления ошибки переполнения; знаменателю и числителю присваивается значение 1 и с этим значением производится вычисление. 2. При появлении ошибки, отличной от ошибки переполнения, выполнение программы прерывается с информированием пользователя об ошибке.
Private Sub CommandButtonl_Click()
Dim Числитель As Double
Dim Знаменатель As Double
Dim Результат As Double
'Передача управления на обработчик ошибок, помеченный меткой 'Обработка.
On Error GoTo Обработка
'Проверка, является ли числитель числом.
If IsNumeric (TextBox1.Text) = False Then
MsgBox "Ошибка в числителе", _ Vblnformation, "Деление"
TextBox 1.SetFocus
Exit Sub
End if
'Проверка, является ли знаменатель числом.
If IsNumeric (TextBox2.Text) = False Then
MsgBox"Ошибка в знаменателе",_Vblnformation,"Деление" TextBox2.SetFocus
Exit Sub
End if
'Проверка, является ли знаменатель нулем.
If CDbl (TextBox2.Text) = 0 Then
MsgBox "Знаменатель не может быть нулем",_ Vblnformation, "Деление"
TextBox2.SetFocus
Exit Sub
End if
'Вычисление
Числитель = CDbl (TextBox1.Text)
Знаменатель = CDbl (TextBox2.Text)
Результат = Числитель/Знаменатель
TextBox3.Text = Cstr (Результат)
Выход из процедуры в случае успешного завершения
Exit Sub
Rem Обработчик ошибок
Обработка:
Select Case Err.Number
'Обработка ошибки переполнения
Case Is = 6
MsgBox "Произошла ошибка переполнения", _ Vblnformation, "Деление"
TextBox1.Text = 1
TextBox2.Text = 1
Знаменатель = 1
Resume
'Обработка любой другой ошибки
Case Else MsgBox "Произошла ошибка: "&Err.Description& Vblnformation, "Деление"
Exit Sub
End Select
End Sub
Дата добавления: 2016-02-04; просмотров: 509;