Litvek - онлайн библиотека >> Сергей Михайлович Парижский >> Программирование: прочее и др. >> Delphi. Учимся на примерах >> страница 37
выражение of

значение1: блок_кода1;

значениеN: блок_кодаN;

else блок_кода;

end;

Если результат выражения совпадает со значением1, то выполняется блок_кода1; если со значением2 — 6лок_кода2 и т.д. Если результат выражения не совпадает ни с одним значением, то выполняется блок кода в ветке else, а при ее отсутствии — код после ключевого слова end, завершающего конструкцию case.

Примечание

Результат выражения, который сопоставляется со значениями в ветках конструкции case, может быть только целочисленного или символьного типа.

Циклические конструкции

Для организации циклического выполнения программных блоков в языке Object Pascal используют циклические конструкции трех типов: for-do, while-do и repeat-until. Они отличаются характером начала и завершения цикла.

Конструкция for-do

Синтаксис конструкции for-do для цикла с увеличением значения счетчика:

for идентификатор_счетчика := начальное_значение to конечное_эначение do блок_кода;

Синтаксис конструкции for-do для цикла с уменьшением значения счетчика:

for идентификатор_счетчика := начальное_значение downto конечное_значение do блок_кода;

Выход из цикла for определяется достижениям некоторого значения специальной переменной, называемой счетчиком цикла. Цикл выполняется как минимум один раз.

Конструкция while-do

Синтаксис конструкции while-do:

while выражение do блок_кода;

Выход из цикла while-do происходит в том случае, если выражение, расположенное между ключевыми словами while и do, дает значение False. Цикл может не выполниться ни одного раза.

Конструкция repeat-until

Синтаксис конструкции repeat-until:

repeat блок_кода until выражение;

Выход из цикла repeat-until происходит в том случае, если выражение, расположенное после ключевого слова until, дает значение True.

Досрочный выход из циклов

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

Обработка исключений

Исключение (exception) — это результат выполнения некорректного оператора, что привело к возникновению ошибки. В языке Object Pascal для обработки исключений предназначена специальная конструкция:

try

 //Операторы, которые могут привести к возникновению исключения

except

 //Операторы, выполняемые в случае возникновения исключения

end;

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

В частности, в блоке except можно обрабатывать исключения в зависимости от их типа с помощью конструкции

except

 on Тип_исключения1 do Блок_операторов1;

 on Тип_исключения2 do Блок_операторов2;

 …

 on Тип_исключенияN do Блок_операторовN;

end;

Типу исключения соответствует имя класса, производного от класса Exception. В отличие от других классов Delphi, имена классов исключений начинаются к латинской буквы "E". Перечислим некоторые из этих классов:

• EZeroDivide — деление на ноль;

• EAccessViolation — ошибка доступа к памяти;

• ERangeError — выход значения за границы допустимого диапазона;

• EStackOverflow — переполнение стека памяти из-за слишком больших переменных или чрезмерно большого количество рекурсивных вызовов процедур (вызов процедуры самой себя);

• EConvertError — ошибка преобразования (например, строки в число);

• EDatabaseError — ошибка при работе с базой данных;

• EOutOfMemory — переполнение памяти;

• EFCreateError — ошибка создания файла;

• EFilerError — ошибка чтения/записи при работе с файлом;

• EFOpenError — ошибка открытия файла;

• EIniFileException — ошибка при работе с INI-файлом;

• EInOutError — ошибка ввода-вывода.

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

except

 on E: Exception do Блок_операторов;

end;

При этом в блоке операторов после ключевого слова do можно обращаться к свойству E.Message, которое содержит строку с описанием ошибки.

Блок операторов finally

Существует еще одна конструкция, связанная с обработкой исключений:

try

 //Операторы, которые могут привести к возникновению

 //исключения

finally

 //Операторы, которые выполняются при любых условиях

end;

Блок операторов после ключевого слова finally выполняется в любом случае, независимо от того, возникло исключение в блоке try или нет.


Litvek: лучшие книги месяца
Топ книга - Геймдизайн [Джесси Шелл] - читаем полностью в LitvekТоп книга - Мы против вас [Фредрик Бакман] - читаем полностью в LitvekТоп книга - Спаси себя [Мона Кастен] - читаем полностью в Litvek