Подпрограмма обработки ошибки

Синтаксис 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; просмотров: 486;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.007 сек.