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

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

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

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

обработал исключение, его обрабатывает 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. Ни при каких обстоятельствах не включается

Лекция 8: Управление памятью


Также читать:

Понравилась статья? Поделиться с друзьями: