Access VBA: подавленные ошибки времени выполнения

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

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

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

10.12.2008 11:24:53
Кажется, у вас есть сообщение об ошибке, то есть При ошибке Перейти ... Пожалуйста, опубликуйте код для сообщения об ошибке. Это поведение не по умолчанию.
Fionnuala 10.12.2008 12:00:04
Нет, это происходит, например, в Click-Handler с одной строкой Debug-Print 1/0
martin roller 10.12.2008 13:37:20
3 ОТВЕТА

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

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

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

1
10.12.2008 16:37:40
Если вы хотите скрыть свой код, распространяйте MDE, в котором нет кода. Он также не потеряет глобальные переменные при любой ошибке, которая не была поймана.
David-W-Fenton 13.12.2008 00:31:56

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

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

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

0
23.05.2017 11:48:36

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

0
22.05.2009 02:04:38