Анимация
JavaScript
|
Главная Библионтека ! Окно отладки [Formsmodule] ?ret num() 2 Рис. 12.5. Внутри вашего кода вы можете использовать метод Print объекта Debug, для того чтобы послать вывод в окно отладки. Этот способ позволяет вам создать историю значений переменной или свойства в процессе выполнения в окне отладки. Когда приложение приостановится или закончит свою работу, вы сможете увидеть напечатанные значения. Например, следующее значение выведет в окно отладки значение переменной myvar: Debug.Print "Значение переменной равно =" & myvar Эта техника хорошо помогает, когда имеется место в программе, где переменная (в нашем случае myvar) изменяется. Например, вы можете использовать выражение, которое меняет значение переменной vyvar, в цикле. Вы можете работать с диалоговым окном Вызовы (Calls), приведенном на рис. 12.6, для исследования последовательности действий приложения в случаях, если оно состоит из цепочки вложенных вызовов процедур. Miijiyiii-i Пр ii iiiHjiyf 1и Окно отладки* Выпссти □акрщть Рис. 12.6. Диалоговое окно Вызовы Для того чтобы вызвать диалоговое окно Вызовы, необходимо: • Приостановить выполнения кода. Вы можете вывести диалоговое окно Вызовы, только когда выполнение кода приостановлено. • Щелкнуть на кнопке Вызовы в панели инструментов. Например, процедура события может вызвать вторую процедуру, которая, в свою очередь, вызывает третью - и все это до того, как процедура события, вызвавшая эту цепочку, завершилась. Диалоговое окно Вызовы выводит список всех активных процедур в серии вложенных вызовов процедур. Чем позже процедура вызывалась, тем ближе к верху диалогового окна она расположена. В информацию о каждой процедуре входит название модуля, включающего процедуру, за которым следует имя вызываемой процедуры. Одна из главных задач, которая стоит перед программистом, создающим профессиональное приложение, - мягкий перехват ошибки, без завершения работы программы и вывода малопонятного сообщения об ошибке. Источник ошибок времени выполнения не всегда очевиден, часто требуется потратить много часов на отладку, для того чтобы найти их. Например, хотя приложение будет верно работать при нормальных условиях, оно может вывести сообщение об ошибке, если будет введено значение не того типа, которое требует какое-либо из полей ввода. Ошибки времени выполнения происходят тогда, когда Access получает команду, которую он не может выполнить, такую, как, например, деление на ноль. Когда Access наталкивается на ошибку времени выполнения, программа останавливается и выводится диалоговое окно с сообщением, описывающем ошибку. В это время вы можете: • Остановить выполнение программы. • Продолжить выполнение, если вы разрешите проблемы в окне отладки. • Просмотреть окно отладки, где в это время вы можете увидеть выделенной строчку, которая привела к ошибке. • Перейти прямо к строчке, которая вызвала ошибку. • Вызвать Справку по данной ошибке. Для чего перехватывать ошибки времени выполнения? Перехватывая ошибки времени выполнения, вы делаете приложение более устойчивыми по отношению к типичным ошибкам, с которыми оно может встретиться. При этом: • Создаются устойчивые приложения. Приложение, которое перехватывает ошибки времени выполнения, может справиться со многими поль-зовательскими ошибками без остановки приложения. Сделав приложение устойчивым по отношению к часто встречающимся ошибкам, вы уменьшаете вероятность его полного развала в процессе работы. • Если приложению все же не удается обработать сложившуюся ошибочную ситуацию, ваше приложение может тем не менее аккуратно закрыть все открытые файлы и тем самым с большой долей вероятности сохранить их для дальнейшего использования. Большая часть обработчиков ошибок имеет общую схему. Когда Access сталкивается с ошибкой времени выполнения, он ищет выражение On Error Goto <<выражение>>. Если он его находит, ошибка обрабатывается и выполнение продолжается либо с того же выражения, на котором оно остановилось, либо с какого-нибудь другого. Если Access не может найти выражение On Error Goto, выполнение процедуры приостанавливается и Access выводит сообщение об ошибке времени выполнения, которое может в какой-то степени удивить ваших пользователей. Существует восемь стандартных функций и выражений для перехвата ошибок. Их описание приведено в табл. 12.2. Таблица 12.2. Основные программные функции отладки в Access Выражение Описание или функция On Error Goto Подключает обработчик ошибок и указывает расположение обработчика внутри процедуры. Может также использоваться для отключения обработчика ошибок Err Устанавливает свойство Err в (Выражение) указанное значение Err (Функция) Возвращает статус ошибки Error Воспроизводит ошибку (Выражение) Error Возвращает сообщение об ошибке, (Функция) соответствующее указанному номеру Resume Продолжает выполнение с выражения, которое вызвало ошибку, после того как обработчик ошибок отработал Resume Next Продолжает выполнение со строки, следующей за строкой, которая вызвала ошибку, после того как обработчик ошибок отработал Resume Строка Продолжает выполнение с указанной строки и метки после обработки ошибки Существуют три действия, которые можно применить к большинству обработчиков ошибок: • Установка перехватчика ошибок. Каждая процедура или функция, которая поддерживает перехват ошибок, должна включать выражение On Error, которое указывает Access, где искать инструкции по обработке ошибок. Хотя команда On Error должна указывать на метку или строку внутри той же самой процедуры, выражение после метки может вызывать другую процедуру. • Оформление обработчика ошибок. Обработчик ошибок обычно состоит из выражения Select Case (или похожего выражения для принятия решений), которое различает разные значения свойства Err и способ их обработки. • Выход из обработчика. Используйте одно из выражений Resume для указания выхода из процедуры, если ошибка приводит к тупиковой ситуации, или для продолжения выполнения программы. Для отключения обработчика ошибок вставьте следующее выражение в код вашей процедуры: On Error Goto 0 Когда Access наталкивается на ошибку времени выполнения, он ищет неактивный обработчик ошибок в следующей последовательности: 1. Текущая процедура. 2. Процедуры, перечисленные в списке Вызовы (начиная с самой последней вызываемой процедуры). 3. Обработчик ошибок внутри Access, который останавливает выполнение программы и выводит диалоговое окно ошибки времени выполнения. Обработка ошибок процессора баз данных в Access Ошибки, связанные с работой процессора баз данных, вызывают событие Error. Это относится к ошибкам процессора баз данных Microsoft Jet, но не к ошибкам времени выполнения Access. Выполняя процедуру события или макроса при возникновения события Error, вы можете предотвратить вывод сообщения об ошибке Microsoft Access и вывести пользовательское сообщение об ошибке, которое может оказаться более подходящим по контексту для вашего приложения. Свойство OnError используется для того, чтобы указать макрос или процедуру Access, которая будет выполняться при возникновении события Error. Устанавливайте это свойство тем же путем, которым вы устанавливаете остальные свойства. Например, синтаксис для процедуры события Error формы должен иметь следующую конструкцию: Sub Form Error(DataErr As Integer, Response As Integer) Аргумент DataErr является кодом ошибки, возвращаемым функцией Err при возникновении ошибки. Вы можете использовать аргумент DataErr вместе с функцией Error$, чтобы соотнести номер ошибки с соответствующим сообщением об ошибке. Аргумент Response определяет, будет ли выводиться сообщение об ошибке. Для задания значения этого аргумента можно использовать одну из следующих констант: • DATA ERRCONTINUE - это значение приводит к игнорированию ошибки, и код продолжается без вывода сообщения об ошибке. Вы можете добавить свое собственное сообщение об ошибке. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 [ 134 ] 135 136 137 138 139 140 141 142 143 144 145 146 |