Главная » Basic » ПРОЦЕДУРЫ ОБРАБОТКИ ОШИБОК

0

Эту тему повышенной трудности при первом чтении можно пропустить, пока не будет  прочитана часть III.

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

МикроЭBM, будучи небольшими и транспортабельными, зависят от местных сетей электропитания. В отличие от больших ЭВМ, которые могут иметь стабилизированное питание микроЭВМ должны подсоединяться к обычной электросети, в которой вполне могут появляться "выбросы" напряжения из-за работы других электроприборов, а также флуктуации уровня  напряжения. Кроме того, под воздействием  радиочастотного  электромагнитного  излучения  в   неэкранированных  кабелях  или коннекторах могут возникать электрические шумы.

Транспортабельность новое качество ЭВМ, которое приводит к тому, что все больше и  больше неспециалистов начинают использовать микроЭВМ. Это хорошее дело, но в

результате вероятность ошибочного ввода значительно увеличивается. Хотя при работе в таких условиях вводимые значения должны тщательно проверяться, тем не менее в отдельных случаях ошибочное значение может попасть в программу и через некоторое время привести к серьезной ошибке.

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

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

10   ON ERROR GOTO 500

где строка 500 служит началом раздела обработки ошибок. Пока действие этого оператора остается в силе, при возникновении ошибки управление передается процедуре обработки ошибок,  которая в конце концов либо возвращает управление в то место, где возникла ошибка, либо в какое-либо иное место программы. Оператор ON ERROR обладает "отложенным" действием,  что  означает, что он вступает в дело тогда, когда в каком-либо месте программы произошла  ошибка. Для перехода к нормальному режиму исполнения вылавливание ошибок может быть  прекращено оператором ON ERROR OFF или ему подобным. (В Бейсике Microsoft для этих  целей используется оператор ON ERROR GOTO 0.)

Следующий пример иллюстрирует процедуру вылавливания ошибок: 10 REM

20    . . .

30  …

40   ON  ERROR GOTO   200

50 . . .

200 REM ПОДПРОГРАММА ОБРАБОТКИ ОШИБКИ

210 IF ERR=11 THEN 240

220 PRINT "ОШИБКА";ERR;"В СТРОКЕ";ERL

230 STOP

240   PRINT "ЗАФИКСИРОВАНА ПОПЫТКА ДЕЛЕНИЯ НА НУЛЬ. ";

245   PRINT "ПРОВЕРЬТЕ ВВОД"

250   Z=1.0Е-20

260  RESUME

В Бейсике Microsoft и в Бейсике ВВС имеются две переменные (или функции), ERR и ERL. Первая содержит номер ошибки, а вторая номер строки. В приведенном выше примере проверка ошибок была инициирована в строке 40, после чего при появлении ошибки управление было передано строке

200. Этой строкой начинается специализированная подпрограмма обработки ошибки, возникающей при попытке деления на 0 поэтому если произошло что-то иное, то информация об этом печатается в строке 220. Если обнаружено деление на 0, то в строке 240 выводится соответствующее сообщение и значение переменной (Z) устанавливается таким образом, чтобы  ошибки не возникло Оператор в строке 260 вызывает возврат управления к ошибочной строке и повторение ее выполнения.

Чтобы в процедуре обработки ошибок можно было выяснить детали ошибки, в системе должны быть предусмотрены переменные типа ERL, ERR или специальные операторы IF. Как только выполнены соответствующие действия по обработке ошибки, которые могут включать в себя и  прекращение вылавливания будущих ошибок, управление исполнением возвращается обратно в программу либо с помощью  оператора  RESUME,  либо,  если  такого  нет,  с  помощью  оператора  GOTO.  Оператор RETURN использовать нельзя, так как процедура обработки ошибок вызывается не таким способом, как обычные подпрограммы.

Источник: Уолш Б.    Программирование на Бейсике: Пер. с англ. М.: Радио и связь, 1988. 336 с: ил.

По теме:

  • Комментарии