Вход


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

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

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


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

  


Обработка ошибок в вызывающих процедурах


Другой способ состоит в генерации ошибки Visual Basic в вызываемой процедуре и ее обработке строчным обработчиком ошибок в вызывающей процедуре. В следующем примере функция FileExists при неудаче генерирует ошибку. Оператор On Error Resume Next, добавленный перед вызовом этой функции, в случае ошибки заставляет программу перейти к следующему за вызовом функции оператору, не выполняя подпрограмму обработки ошибок.

Оператор On Error Resume Next сопровождается кодом обработки ошибок. Этот код проверяет свойства объекта Err и определяет, была ли ошибка и каков ее номер. Если Err.Number содержит ненулевое значение, значит, произошла ошибка, и программа может предпринять соответствующие действия в зависимости от значений свойств объекта Err.

Function FileExists(p As String)
═════If Dir(p) <> "" Then
══════════Err. Raise conSuccess ══'
генерируем ошибку с кодом conSuccess
═════Else
══════════Err. Raise conFailure ═════'
генерируем ошибку с кодом conFailure
═════End If
End Function

Dim ResultValue As Long
On Error Resume Next
ResultValue = FileExists("C:\Testfile.txt")
If Err.Number = conFailure Then
═════.
═════. '
обрабатываем ошибку
═════.
Else
═════.
═════. ?
продолжаем нормальное выполнение программы
═════.
End If

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

Function Power(X As Long, P As Integer, ByRef Result As Integer) _
══════════As Long
═════On Error GoTo ErrorHandler
═════Result = x ^ P
═════Exit Function
ErrorHandler:
═════Power = conFailure
End Function

' вызываем функцию Power
Dim IngReturnValue As Long, IngErrorMaybe As Long
IngErrorMaybe = Power(10, 2, IngReturnValue)
If IngErrorMaybe Then
═════.
═════.'
обрабатываем ошибку
═════.
Else
═════.
═════. '
продолжаем нормальное выполнение программы
═════.
End If

Если бы функция просто возвращала результат вычисления или код ошибки, вычисленное значение могло бы попасть в диапазон кодов ошибок, и вызывающая процедура не отличила бы ошибку от результата.



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

  



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

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