Студопедия

КАТЕГОРИИ:


Архитектура-(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)

План заняття. 1. Характеристика поняття глобальна обробка виключень




1. Характеристика поняття глобальна обробка виключень

2. Характеристика поняття локальна обробка виключень

 

В Delphi введены два уровня обработки исключительных си­туаций: локальная и глобальная обработка. Глобальная обработка исключений производится только в том случае, если для возник­шей исключительной ситуации не создан локальный обработчик.

Глобальная обработка исключений осуществляется с помощью объекта Application, который есть у любого приложения. Дан­ный объект генерирует событие OnException в случае получения от системы сообщения о возникновении ошибки. Глобальная обра­ботка ошибок реализуется путем создания обработчика этого собы­тия. По умолчанию при возникновении любых динамических оши­бок вызывается метод HandleException (Sender: Object), который выводит на экран окно, содержащее информацию об ошибке. Данный метод не устраняет причины исключения, а только форсированно прекращает выполнение приложения.

Для того чтобы создать собственный глобальный обработчик исключения, удобно использовать компонент ApplicationEvents, который появился только в Delphi 5. Следует помнить, что в бо­лее ранних версиях Delphi такой компонент отсутствует, поэто­му создание глобального обработчика исключений будет для про­граммиста более трудоемким.

Необходимый код обработки исключительной ситуации по­мещается в обработчик события OnException компонента ApplicationEvents. Этот обработчик создается с помощью Инспек­тора объектов.

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

Локальная обработка исключений. Локальная обработка ис­ключений осуществляется при помощи двух конструкций: try.. except и try.. finally. Эти конструкции очень похо­жи в использовании и описании, но имеют различное назначение.

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

Конструкция try.. except имеет две секции и записывается и таком формате:

Здесь Операторы_1 - это блок операторов, выполнение ко­торых может привести к ошибке, а Операторы__2 - блок опера­торов, которые выполняются при возникновении ошибки.

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

В том случае, если при выполнении операторов из блока try возникла исключительная ситуация, управление передается в сек- js цию except. В противном случае операторы секции except игнорируются. Операторы секции except служат для того, что- I бы ликвидировать исключительную ситуацию и тем самым вое- > становить работоспособность программы. Когда используется I конструкция try..except, для обрабатываемых с ее помощью исключений глобальный обработчик не вызывается.

Если возникает необходимость анализировать класс исключи­тельной ситуации с целью ее обработки, разработчик приложения \ может разбивать секцию except на несколько частей с помощью конструкции on..do. Такая конструкция применяется в случае, если в зависимости от класса исключения должны производиться различные действия по обработке этого исключения. Данная кон-струкция имеет следующий синтаксис:

Здесь Оператор_1 - это оператор обработки исключения указанного класса, Опвратор__2 - является оператором, выпол­няемым в случае, если исключительная ситуация не относится к заданному классу. В качестве идентификатора выступает произ-вольное имя переменной, заданное программистом. Идентифика­тор указывать необязательно.. Он представляет собой экземпляр класса исключения, который может быть использован для доступа к объекту возникшего исключения. Эта переменная является лая кальной и доступна только внутри данной конструкции.

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

 

Приложение, содержащее данную процедуру, предполагает выполнение следующих операций по нажатию кнопки Buttonl:

1)Создается файл C:\filel.txt, который затем открывается на запись.

2)Уже существующий файл C:\file2.txt открывается на чтение.

3)Содержимое второго файла переписывается в первый.

При возникновении какой-либо ошибки пользователю выдает­ся соответствующее сообщение.

Конструкция try.. finally используется в случае, когда необходимо, чтобы некоторые действия были обязательно выпол­нены, в независимости от того, произошла ошибка или нет (на­пример, необходимо в любом случае освободить используемую оперативную память или закрыть какой-либо файл). Данная кон­струкция имеет такой формат: •

Здесь Операторы_1 - это операторы, выполнение которых может привести к ошибке, а Операторы_2 - это операторы, ко­торые должны быть обязательно выполнены.

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

Конструкции try..except и try..finally должны раз­мещаться одна в другой, то есть быть вложенными.

Могут возникать ситуации, когда необходимо программно вы­зывать исключительную ситуацию. Оператор Raise позволяет создать объект исключения - экземпляр класса TException или его потомка. Данный оператор записывается в таком формате:

Raise ExceptionClass.Create;

Здесь в качестве ExceptionClass используется необходи­мый класс исключительной ситуации. Вместо метода Create для создания объекта исключения могут использоваться и другие ме­тоды, приведенные выше (например метод CreateFmtHelp).

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

Ниже показан пример вызова исключительной ситуации.

В данном примере исключительная ситуация генерируется в случае, когда при вызове функции Range ее параметр Result выходит за пределы, определяемые параметрами Min и Мах. Со­общение, указанное в качестве параметра метода CreateFmt, будет выводиться на экран в качестве стандартного. Другими сло­вами, в случае возникновения данного исключения Свойство Message класса TException приобретает значение, равное за­данной строке.

 

Конрольні питання

1. Надати характеристику поняття глобальна обробка виключень

2. Надати характеристику поняття локальна обробка виключень

 


АУДИТОРНЕ ЗАНЯТТЯ

ЗМІСТОВИЙ МОДУЛЬ 6: ПРОГРАМУВАННЯ З ГРАФАМИ. ВІЗУАЛЬНІ КОМПОНЕНТИ. БАЗИ ДАНИХ

ТЕМА 6.4: ОБРОБКА ВИКЛЮЧНИХ СИТУАЦІЙ




Поделиться с друзьями:


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


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



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




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