Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УчебноеПособие по VB_6.doc
Скачиваний:
43
Добавлен:
24.12.2018
Размер:
3.17 Mб
Скачать

7.2.2. Реализация локального обработчика ошибок Порядок обработки ошибок

Обработка ошибок производится в три этапа:

  • подготовка перехвата;

  • проверка и устранение ошибки;

  • продолжение выполнения программы.

С труктура процедуры с обработчиком ошибок приведена на рис. 7.1.

Первым шагом является расстановка “ловушек”. Для этого предназначен оператор On Error. Оператор On Error должен располагаться в начале процедуры. Он не выполняет никаких действий, а только передает управление обработчику ошибок по указанной метке при их возникновении.

Проверку кода ошибки и устранение ошибок обеспечивают обработчики ошибок.

Продолжение выполнения программы осуществляется с помощью оператора Resume.

Обработчик ошибок должен располагаться в конце процедуры. Перед обработчиком ошибок вставляется оператор Exit Sub – выход из процедуры. Это необходимо для того, чтобы при нормальном выполнении программы обработчик ошибок не выполнялся.

Реализация обработчика ошибок

Для реализации обработчика ошибок необходимо:

  • определить код ошибки;

  • определить действия, которые должны быть выполнены при соответствующей ошибке;

  • обеспечить продолжение выполнения программы после устранения ошибки.

Рассмотрим пример локального обработчика ошибок при открытии файла.

Пример 7.4. Локальный обработчик ошибок.

Private Sub cmdVvod_(Click)

On Error GoTo OpenError

‘ Вызов процедуры ввода данных

FileNameVvod: ‘ метка возврата при выходе из обработчика ошибок

Nkanal=FreeFile ( )

Name=Input “Введите имя файла”

Open Name For Input As Nkanal

Exit Sub

OpenError: ‘ метка процедуры обработчика ошибок

Select Case Err.Number `поверяется номер ошибки

Сase53 ` ошибка файл не найден

MsgBoxErr. Deskription

‘ выводится текст системного описания ошибки

MsgBox “Введите правильно имя файла”

Case Else ` на случай появления непредвиденных ошибок

MsgBox “Неустановленная ошибка:” & Err.Description

Exit Sub

End Select

Resume FileNameVvod

End Sub.

А лгоритм работы программы при обработке ошибок приведен на рис. 7.2.

Пример реализации обработчика ошибок ErrorHandler:

Dim Answer As Integer

---------------------------------------------------------------------------------------------------

Error Handler:

Answer =MsgBox(“ошибка выполнения”,vbAbortRetryIgnore)

‘окно MsgBox содержит три кнопки: “Отказаться”, _

“Повторить” и “Игнорировать”

Select Case Answer

Case vbAbort

Unload Me ‘ отказаться, выйти из программы с сохранением _

данных

Case vbRetry

Resume ‘ повторить операцию

Case vbIgnore

Resume Next ‘ игнорировать

End Select

7.2.3. Централизованная обработка ошибок

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

Пример 7.5. Применение централизованного обработчика ошибок.

Private Sub cmdGetData_Click ( )

Dim FileName As String

FileName = InputBox (“Введите имя файла”)

If OpenFile(FileName)=True Then

‘ Open File (FileName) - функция, централизованный обработчик ошибок

MsgBox “Файл успешно открыт”

Else

MsgBox “Файл не открыт. Проверьте пожалуйста имя файла”

End If

End Sub

------------------------------------------------------------------------------------------------------------

Function OpenFile (FileName As String) As Boolean

‘ активизируем локальный обработчик ошибок

On Error CoTo OpenError

‘ открываем файл

Open FileName For Input As # 1

‘ все в порядке, возвращаем True

OpenFile=True

‘ выходим из функции, чтобы не попасть в локальный

‘ обработчик ошибок

Exit Function

Open Error: ‘ локальный обработчик ошибок

Select Case Err.Number

Case 53

‘ Файл не найден

Case 55

‘ Файл уже открыт

Case Else

` неизвестная данной программе ошибка

End Select

` Операция не удалась, возвращаем False

OpenFile=False

End Function

В данном примере в обработчике ошибок не указаны конкретные действия, которые необходимо выполнить в той или иной ситуации, а даны лишь комментарии.