Вход


Главная страница >> Учебный процесс >> Конспекты >> MS Office. Руководство программиста по Visual Basic для MS Office 97 >> Отладка и обработка ошибок >> Создание обработчика ошибок >> Выход из подпрограммы обработки ошибок >> Отличие Resume от Resume Next

Переход на главную страницу

Сервер поддерживается
кафедрой информатики и вычислительной техники ГрГУ
тел. +375-(0)152-445-101
E-mail :
kadan@grsu.grodno.by


[Назад]    [Содержание ]    [Вперед]

  


Отличие Resume от Resume Next


Различие между Resume и Resume Next в том, что Resume продолжает выполнение с оператора, вызвавшего ошибку, a Resume Next ? с оператора, следующего за тем, что привел к ошибке. В общем случае Resume используют, когда обработчик может исправить ошибку; в ином случае ? Resume Next. Вы можете написать обработчик так, чтобы пользователь даже не знал о самом факте возникновения ошибки, или так, чтобы на экране появлялось сообщение о ней и пользователь мог исправить ситуацию.

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

Ошибка Причина
?Деление на нуль? Числитель отличен от нуля, знаменатель равен нулю.
?Переполнение? Числитель и знаменатель равны нулю (при делении чисел с плавающей точкой).
?Недопустимый вызов или аргумент процедуры? Либо числитель, либо знаменатель не является числом (или не считается таковым).

Во всех трех случаях обработчик перехватывает ошибку, и функция возвращает Null:

Function Divide(numer. denom) as Variant

═════Const mnErrDivByZero = 11, mnErrOverFlow = 6, mnErrBadCall = 5
═════On Error GoTo MathHandler
═════Divide = numer / denom
═════Exit Function

MathHandler:
═════If Err. Number = mnErrDivByZero Or Err,Number = mnErrOverFlow _
═══════════════Or Err = mnErrBadCall Then
══════════Divide = Null══ '
если возникла ошибка "деление на 0",
═══════════════════════════════════'
"переполнение" или "недопустимый вызов
═══════════════════════════════════'
или аргумент процедуры", возвращаем Null
═════Else
══════════'
выводим сообщение о непредвиденной ошибке
══════════MsgBox "Unanticipated error " & Err.Number & ": " & _
══════════════Err. Description. VbExclamation
═════End If════════════════════════'
в любом случае Resume Next возобновит
═════Resume Next══════════'
программу с оператора Exit Function
End Function



[Назад]    [Содержание ]    [Вперед]

  



Текст пособия подготовлен на основе материалов книги
Microsoft Corporation. Руководство программиста по Visual Basic для Microsoft Office 97 / Пер. с англ. - М.: Издательский отдел "Русская Редакция" ТОО "Channel Trading Ltd.", 1997. - 544 с.: илл.
c Оригинальное издание на английском языке,
Microsoft Corporation, 1997
c Русский перевод,
Microsoft Corporation, 1997

  
За содержание страницы отвечает Гончарова М.Н.
©
Кафедра СПиКБ, 2002-2017