|
[ Главная ] [ Статьи ] [ Для новичков ] [ Примеры ] [ Программы ] [ Microsoft Agent 2.0 ] [ Пособие ] [ Уроки ] [ Разное ] |
Обработка ошибокНезависимо от того, насколько тщательно разработана и отлажена программа, никогда нельзя полностью исключить возможность возникновения ошибок. Поэтому при написании устойчивых программ необходимо обрабатывать возникновение неисправимых ошибок. Команда, которая применяется для их перехвата в конкретной процедуре, выглядит следующим образом: On Error GoTo... где три точки означают метку (номер строки), определяющую
начало фрагмента обработки ошибки. Данный фрагмент должен размещаться в
рамках этой же процедуры. Невозможно при помощи команды On Error GoTo перейти
к другой процедуре. С другой стороны, фрагменты для перехвата ошибок часто
используются в других процедурах или функциях.
ErrorTrap:
Поскольку необходимо исключить
возможность "вылета" из программы в процедуре обработки ошибок, неплохой
идеей является использование оператора Exit в строке, непосредственно перед
меткой фрагмента по перехвату ошибок.
ErrorNumber = Err.Number то значением переменной ErrorNumber будет номер
ошибки.
Способ использования данной информации очень прост. Предположим, процедура обработки события использует принтер. Где-нибудь внутри процедуры перед оператором печати необходимо разместить строку On Error GoTo PrinterCheck Теперь перед оператором End Sub необходимо добавить следующий код: Exit sub
Идея данного обработчика ошибок
очень проста, а оператор Select Case подходит в данном случае идеально.
В каждом отдельном случае программа проверяет тип ошибки и предлагает возможные
рекомендации по ее исправлению. Если достигнут оператор Case Else, то на
экране появляется номер ошибки. В любом случае после цикла по обработке
ошибок пользователю предлагается возможность выбора при помощи информационной
панели с двумя кнопками. Возможно, понадобится написать общую процедуру
для анализа ошибок. Тогда фрагмент по обработке ошибок в процедуре будет
передавать управление выше. После этого такую процедуру можно использовать
для перехвата и обработки ошибок во многих различных проектах.
Resume Next Visual Basic начинает обрабатывать оператор, находящийся непосредственно после текущего. Можно даже использовать On Error Resume Next для автоматического пропуска любого программного
кода, вызывающего ошибку. (Это приведено не случайно, хотя в данной главе
не применяется.)
Resume Label Обычно в Visual Basic метки
применяются только для обозначения фрагментов по обработке ошибок. Несмотря
на это, для совместимости с предыдущими версиями BASIC введен оператор
безусловного перехода GoTo, но нужда в нем возникает очень редко.
Error (номер кода ошибки) который заставляет Visual Basic срабатывать так,
как будто произошла ошибка с указанным номером. Это облегчает процесс отладки
перехвата ошибок.
On Error GoTo 0 (хотя значение 0 в общем-то не очень и необходимо). Похожим образом можно изменить ссылку на другой обработчик ошибок, используя другой оператор On Error GoTo. Необходимо убедиться, что между обработчиками ошибок присутствует оператор Exit. Visual Basic использует последний оператор On Error GoTo для того, чтобы решить, куда двигаться далее. Для того чтобы обеспечить более централизованную обработку ошибок, когда это необходимо, Visual Basic использует специальный объект Err, свойства которого можно анализировать после возникновения ошибки. Ранее мы видели, как работает свойство Number (Err.Number), выдающее номер ошибки.
Примечание: Microsoft рекомендует использовать свойства и методы объекта Err вместо различного рода функций обработки ошибок, за исключением только программ, написанных для более ранних версий языка. После того как выполняется оператор Resume или On Error, все свойства объекта Err сбрасываются в 0 или сводятся к строке "". Свойства данного объекта инициализируются и после выхода из функции или процедуры. Кроме того, для этого можно использовать оператор Err.Clear
Примечание: Правильным является создание централизованного обработчика ошибок. Однако данной процедуре необходимо передавать текущее значение различных свойств объекта Err. Если вызвать объект Err из новой процедуры, все его значения будут инициализированы. Если необходимо генерировать ошибку для тестовых целей, можно использовать метод Raise объекта Err. Его синтаксис следующий: Err.Raise (Номер)
Совет: Можно использовать метод Raise для определения собственных типов ошибок. Если необходимо вывести описание текущей ошибки, используется оператор Err.Description |
|
|
|
>>>Если у вас есть статья которой нет на сайте
пришлите ее мне--------> Послать статью >>>Если вы хотите задать вопрос пишите--------> Мне нужна помощь |
|
|
|