Access VBA: подавленные ошибки времени выполнения - PullRequest
0 голосов
/ 10 декабря 2008

Пока я разрабатываю свое приложение MS Access, я открываю его нажатием клавиши Shift. При возникновении ошибки, которая не перехватывается (ON ON ERROR ...), появляется окно с сообщением об ошибке. Это хорошая вещь.

Когда пользователь открывает мое приложение, он не смещает щелчок, и открывается соответствующая форма запуска. Однако теперь не обнаруженные ошибки не отображаются, приложение ведет себя так, как будто пользователь нажал кнопку «Стоп» в окне сообщения. Я не хочу такого поведения.

Существует ли опция / свойство / переменная, которая обеспечивает такое же поведение в производственном коде (предпочтительно, даже когда идентификатор приложения преобразован в mde), что и в разработке, то есть показывает окно сообщения для каждой необработанной ошибки? Или необходимо перехватывать ошибки в каждой отдельной подпрограмме события и выводить окно сообщения программой?

Ответы [ 3 ]

1 голос
/ 10 декабря 2008

Оказывается, это побочный эффект установки для свойства AllowSpecialKeys значения False. Это можно сделать программно, но я сделал это в меню «Инструменты»> «Автозагрузка».

Так как это свойство позволяет пользователю открывать редактор кода, оно имеет смысл, но связь феномена, описанного с этим параметром, меня озадачивала.

Значит ли это, что если я хочу скрыть свой код, мне нужно написать все эти обработчики ошибок? Или есть одно центральное место (как основной метод в Java), где я могу вызвать обработчик ошибок. Или я мог бы разрешить специальные ключи и просто защитить код с помощью ключевого слова?

0 голосов
/ 22 мая 2009

Как уже упоминалось, MZ-Tools 3.0 - отличный инструмент для быстрого добавления обработчиков ошибок. Также помните, что ошибки, возникающие в процедурах без обработчиков ошибок, «всплывают» до последнего вызванного оператора On Error. (И если никакого утверждения не существует, вы получаете маленький серый отладочный блок.) Чистый эффект этого состоит в том, что вы можете выполнять минимальную обработку ошибок, просто добавляя обработчики ошибок только в те процедуры, которые являются Public (или Friend) или вызваны по событию. Это позволит вам всегда вызывать как минимум 1 обработчик ошибок «верхнего уровня». Если вы хотите добавить специальную обработку в ваши частные процедуры после этого, не стесняйтесь. Если нет, то при возникновении ошибки они «всплывают» в обработчик ошибок верхнего уровня.

0 голосов
/ 11 декабря 2008

Вы можете создать свой собственный обработчик ошибок и добавить его ко всем процессам, подпрограммам и функциям. У вас есть очень хорошая MZ Tools VBA надстройка, которая позволяет вам многое, например, добавлять номера строк в код, «программировать» метку ошибки и т. Д.

Если вы достаточно умен, вы сможете использовать это дополнение для генерации стандартного кода «управления ошибками», отображающего такие вещи, как err.number, err.description и значение недокументированного erl, которое является номер строки, в которой произошла ошибка (сначала необходимо пронумеровать строки, чтобы получить это значение).

РЕДАКТИРОВАТЬ: Я только что открыл этот вопрос на похожую тему.

...