|
|
Сервер поддерживается
кафедрой информатики и вычислительной техники ГрГУ
тел. +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
|