Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Применение объектов

Except

Finally

Try

Try

Begin

Except

Try

Finally

Try

Begin

Except

Try

{ охраняемый блок операторов }

{ Блок реакции с обработчиками особой ситуации }

end;

 

Внутри блока except создаются обработчики особых ситуаций для классов исключений. Обработчик имеет следующий формат:

 

on <класс особой ситуации> do

{ код обработки особой ситуации }

end;

 

Объект исключения содержит текстовое описание исключения в свойстве Message и адрес исключения, доступный по методу ExceptAddr.

Содержимое finally…end выполняется в любом случае для гарантированного освобождения выделенных ресурсов:

 

{ охраняемый блок операторов }

{ Блок реакции с кодом завершения }

end;

 

Исключения реализуются через стек вызова (список вложенных подпрограмм), и имеют ассоциированную с ним область действия. Необработанные локально (в рамках процедуры-источника), исключения передается вверх по стеку вызова к следующему блоку, который сможет его обработать. Если исключение не обрабатывается пользователем, оно передается в глобальный обработчик исключений.

Поскольку исключение по возможности следует анализировать на максимально низком уровне, то оно в основном осуществляется в блоке try…except…end. Использовать эту конструкцию следует в случае, когда при возникновении исключения требуется выполнение неотложных действий.

Обработчики исключений схожи с виртуальными методами, т.к. их можно использовать для переопределения или дополнения обработки. Если требуется активизировать стандартную обработку исключения после выполнения обработке в блоке except, можно повторно сгенерировать данное исключение с помощью директивы Raise.

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

 

{ Охраняемые операторы }

on ESomeException do

{ Локальная обработка особой ситуации }

raise; { повторное возбуждение исключения }

end;

end;

 

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

 

{ получение дескриптора запрашиваемого ресурса }

{ выполнение потенциально опасных операций }

...

{ Блок реакции с кодом завершения; освобождение ресурса }

end;

{ Блок реакции с обработчиками особой ситуации }

{ выделение требуемых классов исключений }

on < класс особой ситуации 1 > do

on < класс особой ситуации 2 > do

...

on < класс особой ситуации N > do

...

{ если требуется, повторное возбуждение исключительной ситуации }

raise;

end;

В последующем изложении во многих примерах будут рассматриваться особенности выполнения различных алгоритмов не над фактическими данными, а над указателями, задающими расположение этих данных. Необходимость этого состоит в отделении особенностей физического и логического представления данных от обрабатываемых их алгоритмов. Разделяя данные и средства манипулирования ими, мы будем больше основное внимание уделять характеристикам алгоритмов, а не заниматься ненужной разработкой или оптимизацией методов для числовых, строковых и любых другим типов данных.

Поскольку фактически будет проводиться работа с указателями, имеет смысл использовать структуры данных, которые хранят элементы в форме указателей. Таким образом, совокупность обрабатываемых данных должна быть определенным образом организована посредством своих указателей.

Класс TList предоставляет возможность организовать работу со списком разнотипных объектов посредством указателей. Класс позволяет добавлять, удалять, перегруппировывать, сортировать и получать доступ к объектам, на которые указывают элементы списка.

Для доступа к элементу списка служит свойство класса:

 

List: PPointerList;

 

которое представляет структуру:

 

PPointerList = ^TPointerList;

TPointerList = array [0..MaxListSize-1] of Pointer;

 

Перед работой с объектом списка его необходимо создать путем вызова конструктора:

 

var aList: TList;

...

aList:=TList.Create;

...

<== предыдущая лекция | следующая лекция ==>
Структурированная обработка ошибок | Finally. Свойство Items позволяет выполнить обращение к элементу массива через методы чтения- записи для проверки на выход за диапазон
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 259; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.034 сек.