КАТЕГОРИИ: Архитектура-(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; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |