Cтраница 2
В этой главе рассматриваются специальные средства языка: функции опроса командной строки, низкоуровневые средства и обработка фатальных ошибок. Применение низкоуровневых, т.е. более присущих языкам ассемблера, процедур и функций, таких как Move и FillChar, позволяет значительно упростить и ускорить выполнение программ. Здесь же рассмотрены вопросы безопасности применения таких процедур, и кратко представлены средства самого низкого уровня - вставки машинных кодов. [16]
Типичный путь прохождения сигнала запроса на прерывание. [17] |
Пользователю рекомендуется маскировать все особые случаи, за исключением случая недействительной операции, который обрабатывают, как фатальную ошибку в программе. [18]
Первый - при работе программы проверяются диапазоны и индексы ( режим R); при - переполнении возникнет фатальная ошибка счета, и программа прервется. Второй - проверка отключена ( режим R -); все зависит от типа V: если он вещественный или Longlnt, то при переполнении ErrCodeoO, a V содержит числовой мусор. Но если V имеет тип короче чем Longlnt, то ErrCode при переполнении молчит ( равно 0), а в V записывается результат переполнения, мало похожий на содержимое S. [19]
Программа завершается по ошибке, если фиксируется безусловно фатальная ошибка или при нулевом значении ключевого слова & ERRLIMIT фиксируется условно фатальная ошибка. При этом печатается сообщение, идентифицирующее ошибку, а затем, как и в случае нормального завершения, печатаются значения переменных и статистика. [20]
Параметр / F - поиск ошибки ( Find Error) - нужен для поиска строки в тексте программы, вызвавшей фатальную ошибку в указанном сообщением Run Time Error NNN at СЕГМ: СМЕЩ адресе. Компиляция той же программы с ключом / FCErM: CMEIU выведет на экран строку, в которой прервалась программа. [21]
При истолковании данного метода следует соблюилть осторожность, ибо сортировку вставками скорее всего бу-дет работать, даже если алгоритм быстрой сортировки содержит фатальную ошибку, из-за которой эта сортировку просто фу и км и он кровать не будет. Только резкое возраста н кс эятрлт ресурсов может СЛУЖИТЕ. Рисунок 7 9 иллюстрирует этот гтрсшесс tta примере крупного файла. [22]
При использовании данного метода следует соблюдать осторожность, ибо сортировка вставками скорее всего будет работать, даже если алгоритм быстрой сортировки содержит фатальную ошибку, из-за которой эта сортировка просто функционировать не будет. Только резкое возрастание затрат ресурсов может служить сигналом о том, что что-то не в порядке. [23]
Это означает, что все действия, связанные с выделением памяти и ее последующим освобождением, должны явно проводиться самим программистом с сопутствующим этому риском возникновения фатальной ошибки, например, при отсутствии свободной памяти. Для этих целей в распоряжении программиста имеются стандартные процедуры new и dispose. При этом, если освобожденная с помощью стандартной процедуры dispose память выделяется для повторного использования с помощью процедуры new, возникает опасность, связанная с сохранением значения указателя на эту область памяти, оставшегося от ее предыдущего использования. Это может привести к очень трудно диагностируемым и непредсказуемым взаимодействиям по общим данным между различными, не связанными ( логически) друг с другом частями программы. Если же освобождаемая с помощью стандартной процедуры dispose память не поступает в пул для повторного использования ( с помощью стандартной процедуры new), то теряется смысл использования стандартной процедуры dispose. Причем в этом случае любая сколько-нибудь серьезная попытка организовать работу со списками, скорее всего, обречена на провал из-за быстрого исчерпания памяти, так как отсутствует возможность ее повторного использования. [24]
Но затем, когда вы уже мысленно с одобрением похлопываете себя по плечу, Джонс из бухгалтерии, ваш коварный соперник, выдвигает возражение, которое, похоже, вскрывает фатальную ошибку в ваших рассуждениях. Вы не сомневаетесь в этом, и, судя по лицам присутствующих, многие из них придерживаются того же мнения. [25]
Алгоритм на псевдокоде, использующий повторение, управляемое контрольным значением, для решения задачи о подсчете средней оценки в группе. [26] |
При выполнении деления на выражение, значение которого может быть нулем, явно осуществляйте проверку этого случая и обрабатывайте его соответствующим образом ( например, выводите сообщение об ошибке), и не допускайте возникновения фатальной ошибки. [27]
При выполнении деления на выражение, значение которого может быть нулем, явно осуществляйте проверку этого случая и обрабатывайте его соответствующим образом ( например, выводите сообщение об ошибке), и не допускайте возникновения фатальной ошибки. [28]
Все ошибки времени счета можно разделить на условно и безусловно фатальные. Условно фатальные ошибки - это те, которые могут блокироваться соответствующими режимами компиляции. К условно фатальным можно отнести все ошибки, связанные с вводом-выводом ( коды ошибок 2 - 199), подробно рассмотренные в гл. Отключение соответствующих режимов контроля ошибок вовсе не повышает безошибочность программ. Оно всего лишь загоняет болезнь программы внутрь и дает лишний повод усомниться в корректности выдаваемых программой ответов. [29]
Программа анализа ошибочных ситуаций информирует пользователя об ошибках, возникающих в процессе выполнения прикладной программы. В случае фатальной ошибки, как правило, на дисплей выводится сообщение ЕГГОГ и происходит прерывание выполнения прикладной программы. В некоторых случаях выполнение оператора, приводящего к переполнению, блокируется или он выполняется без сообщения об ошибке и прерывании. Фатальная ошибка диагностируется при переполнении регистра X, попытке вычислить функции вне пределов ее определения ( - и 1 / х при х 0, - [ / при xi 0, 10х при х 100, ех при х 100 In 10, In, Ig и ХУ при л: 0, sin, cos и tg при х 1010, sin 1, cos 1 при х 1), а также при попытке выполнить операторы, коды которых зарезервированы для ПМК расширяющегося ряда ( например, К - / или К 1 / х), за исключением операторов К ПВ и К ОД ( коды которых могут быть набраны нажатием клавиш К 1 и К 2), при использовании которых в ПМК, не имеющем памяти программ-данных, пропускается один шаг программы, как и при выполнении оператора К НОП. В этих случаях микроЭВМ К745ИК1303 не посылает в канал связи ( КС) сообщение о выполнении оператора, а программа анализа ошибочных ситуаций проверяет содержимое внутреннего таймера и при его переполнении очищает канал связи ( КС: : FF), заполняя РИ строкой символов FFFFEDDODFFF, выводимой на индикатор, и прекращая выполнение программы. [30]