конструкторов классов при невозможности распределения памяти.




ответствующим образом, он может распознать возникшую проблему и по-

пытаться ее решить; в противном случае исключение передается в код, ко-

торый вызвал вашу подпрограмму и т.д. В конечном счете, если никто не

обработал исключение, его обрабатывает Delphi, выводя на экран стан-

дартное сообщение об ошибке и пытаясь продолжить выполнение програм-

мы.

Весь механизм строится на четырех ключевых словах:

try – определяет начало защищенного блока кода;

Except – определяет конец защищенного блока кода и вводит операторы

обработки исключений в следующем виде:

On (тип исключения) do (оператор)

Finally – указывает необязательный блок, который используется для ос-

вобождения ресурсов, распределенных в блоке try перед обработкой ис-

ключения; этот блок завершается ключевым словом end.

raise – оператор, используемый для порождения исключений. Большин-

ство исключений, которые вы встретите при программировании на Del-

Phi, будут порождаться системой, но вы также можете создать их в соб-

ственном коде, когда во время выполнения обнаружатся недопустимые

или несогласованные данные. Кроме того, ключевое слово raise можно

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

Если вы хотите, чтобы при правильной обработке исключений програм-

ма продолжала выполняться, отключите опцию отладки BreakonException в

окне EnvironmentOptions.

3.2. Предопределенные обработчики исключительных ситуаций

Ниже Вы найдете справочную информацию по предопределенным ис-

ключениям, необходимую для профессионального программирования в

Delphi.

• Exception - базовый класс-предок всех обработчиков исключитель-

ных ситуаций.

• EAbort - “скрытое” исключение. Используйте его тогда, когда хоти-

те прервать тот или иной процесс с условием, что пользователь про-

граммы не должен видеть сообщения об ошибке. Для повышения

удобства использования в модуле SysUtils предусмотрена процедура

Abort, определеннаякак:

procedure Abort;

Begin

raiseEAbort.CreateRes(SOperationAborted) at ReturnAddr;

end;

• EComponentError - вызывается в двух ситуациях:

при попытке регистрации компоненты за пределами процеду-

рыRegister;

когда имя компоненты не уникально или не допустимо.

• EConvertError - происходит в случае возникновения ошибки при

выполнении функций StrToInt и StrToFloat, когда конвертация стро-

ки в соответствующий числовой тип невозможна.

• EInOutError - происходит при ошибках ввода/вывода при включен-

ной директиве {$I+}.

• EIntError - предок исключений, случающихся при выполнении це-

лочисленных операций.

• EDivByZero - вызывается в случае деления на ноль, как результат

RunTimeError 200.

• EIntOverflow - вызывается при попытке выполнения операций, при-

водящих к переполнению целых переменных, как результат RunTime

Error 215 при включенной директиве {$Q+}.

• ERangeError - вызывается при попытке обращения к элементам

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

RunTimeError 201 при включенной директиве {$R+}.

• EInvalidCast - происходит при попытке приведения переменных од

ного класса к другому классу, не совместимому с первым (например,

приведение переменной типа TListBox к TMemo).

• EInvalidGraphic - вызывается при попытке передачи в LoadFromFile

файла, несовместимого графического формата.

• EInvalidGraphicOperation - вызывается при попытке выполнения

операций, неприменимых для данного графического формата (на-

пример, Resize для TIcon).

• EListError - вызывается при обращении к элементу наследника

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

пример, объект TStringList содержит только 10 строк, а происходит

обращение к одиннадцатому).

• EMathError - предок исключений, случающихся при выполнении

операций с плавающей точкой.

• EOverflow - происходит как результат переполнения операций с

плавающей точкой при слишком больших величинах. Соответствует

RunTimeError 205.

• Underflow - происходит как результат переполнения операций с пла-

вающей точкой при слишком малых величинах. Соответствует

RunTimeError 206.

• EZeroDivide - вызывается в результате деления на ноль.

• EMenuError - вызывается в случае любых ошибок при работе с

пунктами меню для компонент TMenu, TMenuItem, TPopupMenu и их

наследников.

• EOutlineError - вызывается в случае любых ошибок при работе с

TOutLine и любыми его наследниками.

• EOutOfMemory - происходит в случае вызовов New(), GetMem() или

конструкторов классов при невозможности распределения памяти.

Соответствует RunTimeError 203.

• EPrinter - вызывается в случае любых ошибок при работе с принте-

ром.

• EProcessorException - предок исключений, вызываемых в случае

прерывания процессора- hardwarebreakpoint. Никогда не включается



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: