Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TURBO_PASCAL.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
8.23 Mб
Скачать

14.8.1. Оператор RunError

В Турбо Паскале введен особый оператор

RunError( N : Word )

Его предназначение — останавливать работу программ так, как будто произошла фатальная ошибка с номером N. Всюду, где можно поставить оператор Halt, можно поставить и оператор RunError. Отличие будет лишь в том, что в последнем случае программа завершится выдачей сообщения об ошибке. Оператор RunError очень удобен при отладке программ, особенно содержащих процедуры завершения и обработки ошибок. С его помощью можно испытать программу на рис. 14.7, не провоцируя реальных критических ситуаций. Вызов RunError без указания номера ошибки эквивалентен вызову RunError (0).

14.8.2. Сводка номеров фатальных ошибок

Фатальные ошибки (табл. 14.2) всегда приводят к немедленной установке программы.

Таблица 14.2

ОПИСАНИЕ ОШИБОК

200

Division by zero (деление на ноль)

ИСТОЧНИК: /, mod, div

201

Range check error (ошибка в границах/диапазонах)

ИСТОЧНИК: ошибка генерируется операторами, скомпилированными в состоянии {$R+} , при возникновении одной из следующих ситуаций:

-индекс элемента массива вышел из описанного диапазона;

-была осуществлена попытка присвоить переменной значение, находящееся вне диапазона значений типа переменной;

-была попытка передать значение, находящееся вне допустимого диапазона, в качестве параметра процедуре или функции {311}

202

Stack overflow error (переполнение стека)

ИСТОЧНИК: вызов процедуры или функции, откомпилированной в режиме $S+, в случае, если нет достаточной области для размещения их локальных переменных. Надо увеличить размер стека, используя директиву компилятора $М

203

Heap overflow error (переполнение кучи)

ИСТОЧНИК: процедуры New или GetMem в случае, если нет достаточно свободного места в динамической области памяти, чтобы выделить память для блока требуемого размера

204

Invalid pointer operation (неверная операция со ссылкой)

ИСТОЧНИК: процедуры Dispose или FreeMem в случае, если их аргумент имеет значение nil или указывает на адрес, лежащий за пределами динамически распределяемой области, или если список свободных блоков переполнен

205

Floating point overflow (переполнение при операции с плавающей точкой) ИСТОЧНИК: операция с плавающей точкой

206

Floating point underflow (исчезновение порядка при операции с плавающей точкой)

ИСТОЧНИК: операция с плавающей точкой. Эта ошибка генерируется только в случае, если используется математический сопроцессор 8087 с управляющим словом, которое демаскирует ошибки, возникающие при исчезновении порядка. По умолчанию исчезновение порядка приводит к возвращению результата, равного нулю

207

Invalid floating point operation (недопустимая операция с плавающей запятой)

ИСТОЧНИК: функции Trunc или Round, если их аргумент не может быть преобразован в целое число, находящееся в диапазоне значений типа LongInt (от -2147483648 до 2147483647).

ИСТОЧНИК: функции Sqrt, если ее аргумент — отрицательный, и Ln, если аргумент — неположительный.

ИСТОЧНИК: переполнение стека 8087. Надо упростить математическое выражение в программе или разбить его на части {312}

208

Overlay manager not installed (не установлена подсистема управления оверлеями)

ИСТОЧНИК: вероятнее всего — отсутствие обращения к процедуре OvrInit или неудачное обращение к этой процедуре. Нужно помнить, что если в каком-либо из оверлейных модулей содержится код инициализации, то нужно создать дополнительный неоверлейный модуль, вызывающий процедуру OvrInit, и использовать этот модуль перед любым из оверлейных модулей

209

Overlay file read error (ошибка чтения оверлейного файла)

ИСТОЧНИК: когда подсистема управления оверлеями пыталась считать оверлей из оверлейного файла, произошла ошибка чтения

210

Object not initialized (объект не был инициализирован)

ИСТОЧНИК: попытка вызова виртуального метода объекта, который не был ранее инициализирован вызовом конструктора. Эта ошибка генерируется, если программа создана в режиме компиляции $R+ {313}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]