Access 2002

Упрощенная обработка ошибок


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

Если в какой-либо части программы имеется только один оператор, способный привести к ошибке, то вы можете и не писать полный обработчик ошибок. С помощью оператора On Error Resume Next и объекта Err можно перехватить и обработать ошибки в основной части процедуры.  12.6, как выглядит подобный код.

В этой программе нет обработчика ошибок. Оператор On Error Resume Next просто указывает VBA игнорировать любые ошибки. Однако когда ошибка происходит, VBA все же записывает информацию о ней в объект Err, — он не останавливает выполнение программы, а передает управление следующему оператору. В любой момент вы можете узнать, успешно ли выполнялась программа после

оператора On Error Resume Next. Если ошибки не было, свойство Err Number равно О, а если была, вы найдете в объекте Err ее код и описание.

Так как содержимое объекта Err после каждой ошибки переопределяется, у вас может возникнуть необходимость сохранить информацию об ошибке для дальнейшего использования. С этой целью мы разработали специальный класс под названием SavedError. Он имеет те же самые свойства, что и объект Err, а также два метода, Save и Raise. Обратите  на объявление объекта objError как экземпляра класса SavedError. После попытки создать набор записей на основе несуществующей таблицы вызывается метод Save объекта SavedError, который получает в качестве аргумента объект Err.

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