Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Теоретическая часть. Исключительная ситуация – это нарушение условий выполнения программы

Читайте также:
  1. I I. Практическая часть - задача
  2. I ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
  3. I. ВСТУПЛЕНИЕ (теоретическая справка)
  4. I. Общая часть
  5. I. ОБЩАЯ ЧАСТЬ
  6. I. Организационная часть (0,5 мин).
  7. I. ПАСПОРТНАЯ ЧАСТЬ

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

Базовым классом для всех исключений является класс Exeption. Объекты данного класса имеют следующие свойства и методы:

- Message – описание исключительной ситуации;

- HelpContext – номер идентификатора контекстной помощи для объекта исключения;

- Create – метод, который служит для создания объекта исключительной ситуации.

Класс Exeption имеет множество потомков, каждый из которых служит для обработки определенный динамической ошибки.

Обработка исключительных ситуаций может происходить по двум направлениям:

1. Глобальная обработка исключений. Механизм ее реализуется через объект Application. При получении от системы сообщения об исключении объект Applicstion генерирует событие OnExeption. Программист может создать свой глобальный обработчик. С этой целью удобно использовать компонент ApplicationEvents, для которого пишется обработчик события OnExeption/

2. Локальная обработка исключений. Для обеспечения возможности использования специализированных обработчиков исключений, в состав языка введены две конструкции try… finally и try…exept.

 

Try

//операторы, выполнение которых может вызвать ошибку

Finally

//операторы, которые должны быть выполнены в случае ошибки

End;

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

 

Try

//операторы, выполнение которых может вызвать ошибку

Exept

//операторы, которые должны быть выполнены в случае ошибки

End;

Эта конструкция применяется для перехвата исключительной ситуации и предоставляет возможность ее обработки. Если в операторах секции try возникла исключительная ситуация, то управление передается первому оператору секции exept. Если исключительная ситуация не возникла, то операторы секции Exept не выполняются. Секция exept может быть разбита на несколько частей конструкциями on…do. Это позволяет анализировать класс исключительной ситуации с целью ее обработки.

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

Raise ClassExeptio.Metod;

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

Исключительные ситуации:

- EConvertError - происходит в случае возникновения ошибки при выполнении функций StrToInt и StrToFloat, когда конвертация строки в соответствующий числовой тип невозможна.

- EIntError - предок исключений, случающихся при выполнении целочисленных операций.

- EDivByZero - вызывается в случае деления на ноль, как результат RunTime Error 200.

- EIntOverflow - вызывается при попытке выполнения операций, приводящих к переполнению целых переменных, как результат RunTime Error 215 при включенной директиве {$Q+}.

- ERangeError - вызывается при попытке обращения к элементам массива по индексу, выходящему за пределы массива, как результат RunTime Error 201 при включенной директиве {$R+}.

- EInvalidCast - происходит при попытке приведения переменных одного класса к другому классу, не совместимому с первым (например, приведение переменной типа TListBox к TMemo).

- EListError - вызывается при обращении к элементу наследника TList по индексу, выходящему за пределы допустимых значений (например, объект TStringList содержит только 10 строк, а происходит обращение к одиннадцатому).

- EMathError - предок исключений, случающихся при выполнении операций с плавающей точкой.

- EOverflow - происходит как результат переполнения операций с плавающей точкой при слишком больших величинах. Соответствует RunTime Error 205.

- Underflow - происходит как результат переполнения операций с плавающей точкой при слишком малых величинах. Соответствует RunTime Error 206.

- EZeroDivide - вызывается в результате деления на ноль.

- EMenuError - вызывается в случае любых ошибок при работе с пунктами меню для компонент TMenu, TMenuItem, TPopupMenu и их наследников.

 

 

Рис. 1. Форма с исходными данными и результатами вычислений

 

Вывод сообщений об ошибках ввода исходных данных a и b и контролю операций деления на ноль приведён на рис. 3.(б).

 

Рис. 2. Вывод сообщений об ошибках.

 


Дата добавления: 2015-07-19; просмотров: 38 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Налоги и налоговая система РФ| I. Системная семейная психотерапия

mybiblioteka.su - 2015-2024 год. (0.009 сек.)