Access 2002

Генерация ошибок


Опытные программисты иногда пользуются интересным тактическим приемом, позволяющим быстро передать управление из одной точки программного кода в другую: они сами генерируют ошибки в своих программах. Иногда это делают даже внутри обработчика ошибок. Для генерации ошибки в нужной точке кода служит метод Err.Raise. В качестве аргументов ему можно передавать свойства объекта Err. Таким образом, можно самому сгенерировать ошибку, используя, например, вот такой оператор:

Err.Raise Number:-vbObjectError + 65535,

Description:-"Ошибка, определенная пользователем”

В результате VBA будет действовать так, как если бы в данном месте программы произошла ошибка с кодом 65535 плюс значение константы vbObject Error (вероятно, означающим что-то для вашего приложения), и описанием ошибки является строка "Ошибка, определенная пользователем". Добавление к своему собственному коду ошибки константы vbObjectError гарантирует, что результат не совпадет с каким-нибудь встроенным кодом ошибки. Поэтому никогда не забывайте выполнять это действие. А в обработчике ошибок вычтите vbObjectError из значения Err.Number — и вы получите свой внутренний код.

Обработка сгенерированной вами ошибки выполняется абсолютно так же, как и обработка любых других ошибок времени выполнения. Например, если имеется действующий оператор On Error Goto, то происходит переход к обработчику ошибок. Свойствам Number и String объекта Err присваиваются значения аргументов метода Err.Raise. Если какой-нибудь аргумент метода Raise вами не задан, VBA использует его значение по умолчанию.

А зачем генерировать ошибку? Обычно ошибки генерируются в ситуациях, когда нарушаются бизнес-правила или логика программы.

Комментарии закрыты