Обработка исключительных ситуаций.ppt
- Количество слайдов: 11
Обработка исключительных ситуаций
Исключительная ситуация – это ситуация, при которой невозможно выполнение программы. Генерация исключительной ситуации – сообщение о ней. Объектный Паскаль: для обработки исключительных ситуаций предназначен класс Exception. Каждой причине исключительной ситуации соответствует класс – наследник класса Exception.
Некоторые классы исключительных ситуаций в Объектном Паскале Класс - ситуация Причина EAcces. Violation Обращение к недопустимой памяти (например, выход индекса массива за объявленные границы) EConvert. Error EDiv. By. Zero EIn. Out. Error EInt. Over. Flow Попытка неверного преобразования типов EOver. Flow Переполнение при работе с плавающей точкой EUnder. Flow Слишком маленький результат при работе с плавающей точкой (исчезновение порядка) EZero. Divide EStack. Over. Flow Деление на ноль с плавающей точкой Деление на ноль для целых значений Ошибка файлового ввода-вывода Слишком большой результат при работе с целыми числами (переполнение) Переполнение стека подпрограмм
Какая программа выполняет обработку исключений • Delphi обрабатывает исключительные ситуации приложения, запущенного из Delphi. • Операционная система Windows обрабатывает исключительные ситуации приложения, запущенного из Windows (Project. exe); это приложение может быть разработано в Delphi или в другой инструментальной среде программирования. • Обратите внимание: сообщения об исключительных ситуациях в этих двух случаях оформлены различно! • Если хотите, чтобы при запуске приложения из Delphi работали обработчики исключительных ситуаций Windows, то в окне Tools/ Debugger Options/ OSExceptions снимите флажок Integrated Debugging.
Зачем нужны операторы контроля исключительных ситуаций? • В Delphi (и в Windows) имеются стандартные обработчики исключительных ситуаций, но пользователь может пожелать обработать ситуацию своим способом. В этом ему помогут операторы контроля исключительных ситуаций.
Операторы контроля исключительных ситуаций • Обработки исключений • Выполнения завершающих действий
Обработка исключений try операторы; {при выполнении которых могут возникнуть исключительные ситуации} except on класс1 do оператор1; on класс2 do оператор2; … [else оператор {для других исключительных ситуаций}] end; {Если при выполнении операторов возникнет исключительная ситуация класса i, то проработает операторi, затем будут работать операторы, стоящие после end} {Операторы могут вызвать стандартный обработчик исключительной ситуации с помощью оператора raise}
Выполнение завершающих действий try операторы; {при выполнении которых могут возникнуть исключительные ситуации} finally завершающие действия {сохранение значений, закрытие фалов и т. п. – эти операторы работают при любом завершении программы} end;
Пример обработки исключительной ситуации
Пример обработки исключительной ситуации procedure TForm 1. Button 1 Click(Sender: TObject); Var x, y: integer; z: real; begin try x: =Str. To. Int(Edit 1. Text); y: =Str. To. Int(Edit 2. Text); z: =x/y; Edit 3. Text: =Float. To. Str(z); except{Работает, если запущен не из delphi} On EZero. Divide do Edit 3. Text: ='знаменатель равен 0'; end;
Конструкторы класса Exception для искусственной генерации исключительной ситуации • Существует много конструкторов, простейший из них: Create ( Msg: string) • if N<1 then raise Exception. Create(‘ N<1’); ключевое слово для создания объекта и вызова нужного конструктора
Обработка исключительных ситуаций.ppt