русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Обработка исключений: try–конструкции


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


Delphi дает возможность запрограммировать обработку исключений с помощью специальных конструкций защищенного блока (try–конструкции), которые предназначены для обработки исключительных ситуаций (исключений), возникающих при некорректных действиях программы: например, в случае деления на ноль, при попытке открыть несуществующий файл, при выходе за пределы выделенной области динамической памяти и т.д.

В Delphi для контроля и обработки исключительных ситуаций предусмотрены две конструкции защищенного блока: try..exceptи try..finally.

 

try{защищенный блок}

<выполняемые_операторы>

except{блок обработки исключений}

onТипИсключения1 doоператор_обработки1;

onТипИсключения2 do оператор_обработки2;

...

onТипИсключенияN do оператор_обработкиN;

Else

<операторы_обработки_остальных_исключений>

end;

 

try{защищенный блок}

<выполняемые_операторы>

finally{заключительный блок операторов}

<заключительные_операторы>

end;

 

где <выполняемые_операторы> – операторы, размещенные в секции try..except, выполнение которых может вызвать исключительную ситуацию;

except – ключевое слово, обозначающее начало секции обработки исключений;

else– ключевое слово, за которым следуют операторы, обеспечивающие обработку исключений, тип которых не указаны в секции except.

Защищенный блок начинается зарезервированным словом try (попытаться) и завершается словом end. Конструкции защищенного блока: try..exceptи try..finallyотличаются способом обработки исключения.

В блоке except выполнение происходит следующим образом:

1. Выполняются <выполняемые_операторы> в защищенном блоке – секции try..except.

2. Если <выполняемые_операторы> выполнены без возникновения исключительной ситуации, работа защищенного блока на этом прекращается, и управление получает оператор, стоящий за end.



3. Если при выполнении <выполняемых_операторов> возникло исключение, то управление получает соответствующий обработчик в блоке обработки исключенийexcept, а если для возникшего типа исключений в блоке except обработчик не предусмотрен, то выполняются <операторы_обработки_осталь-ных_исключений>, стоящие за словом else. Если для возникшего типа исключений в блоке except обработчик не предусмотрен, и нет блока else, то выполняется стандартная процедура обработки данного типа исключений.

В блоке try..finallyоператоры в заключительном блоке операторов – секции finally..end получают управление всегда, независимо от того, возникло ли исключение при выполнении <выполняемых_операторов> в защищенном блоке try..finally или нет. Если исключение возникло, то все операторы в секции try..finally, стоящие за оператором, в котором произошло исключение, пропускаются, и выполняются <заключительные_операторы> в заключительном блоке операторов. Если исключения не было, то после выполнения всех <выполняемых_операторов> будут выполнены <заключительные_опера-торы>.

Например, для рассмотренного выше примера расчета частного двух чисел можно воспользоваться конструкцией try..except:

Var

a,b:integer;

c:real;

Begin

write(’Введите число a:’); readln(a);

write(’Введите число b:’); readln(b);

Try

c:=a/b;

Except

onEZeroDivide do

Begin

writeln(’Ошибка! Деление на ноль!’);

c:=0;

end;

end;

write(’Результат a/b=’,c:7:4);

End.

 

Примечание

При каждом исключении среда Delphi перехватывает управление программой. В этом случае бывает полезно отменить такое поведение среды. Для этого в меню Tools | Debugger Options на странице Languaqe Exception необходимо убрать флажок в переключателе Stop on Delphi Exceptions (в ранних версиях Delphi опция меню Tools | Environent Options и на странице Preference убрать флажок в переключателе Break on exception).

 

Если в программе важен лишь сам факт возникновения исключения и несущественен его тип, то в try-конструкции вместо обработчиков той или иной ошибки в секции except..end можно разместить общие операторы реакции на любую ошибку. Например,

Var

a,b:integer;

c:real;

Begin

write(’Введите число a:’); readln(a);

write(’Введите число b:’); readln(b);

Try

c:=a/b;

Except

writeln(’Ошибка! Деление на ноль!’);

c:=0;

end;

write(’Результат a/b=’,c:7:4);

End.

 

Защищенные блоки, как и составные операторы, могут вкладываться друг в друга на неограниченную глубину.

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

За информацией о типах исключений обращайтесь к справочной службе Delphi.


Рекомендуемая литература

1. Вирт Н. Алгоритмы и структуры данных / Пер. с англ. – М.: Мир, 1989. - 360 с.

2. Гринзоу Лу. Философия программирования для Windows 95/NT / Пер. с англ. – СПб.: Символ-Плюс, 1997. – 640 с.

3. Зелковиц М., Шоу А., Гэннон Дж. Принципы разработки программного обеспечения / Пер. с англ. – М.: Мир, 1982. – 386 с.

4. Практическое руководство по программированию / Пер. с англ. Б. Мик, П. Хит, Н. Рашби и др.; под ред. Б. Мика, П. Хит, Н. Рашби. – М.: Радио и связь, 1986. – 168 с.

5. Фокс Дж. Программное обеспечение и его разработка / Пер. с англ. – М.: Мир, 1985. - 368 с.

6. Язык компьютера. Пер. с англ, под ред. и с предисл. В. М. Курочкина. – М.: Мир, 1989. - 240 с.

7. Баас Р., Фервай М., Гюнтер Х. Delphi 4: полное руководство: пер. с нем. – К.: Издательская группа BHV, 1998. – 800 с.

8. Архангельский А.Я. Программирование в Delphi 5. – М.: Бином, 2000.- 1072 с.

9. Архангельский А.Я. Delphi 6. Справочное пособие. – М.: Бином, 2001.- 1024 с.

10. Архангельский А.Я. Язык Pascal и основы программирования в Delphi. – М.: Бином, 2004.- 495 с.

11. Архангельский А.Я. Программирование в Delphi 7. – М.: Бином, 2005.- 1152 с.

12. Архангельский А.Я. Delphi 2006: Справочное пособие: Язык Delphi, классы, функции Win32 и NET. – М.: Бином, 2006.- 1152 с.



<== предыдущая лекция | следующая лекция ==>
Классификация ошибок | Основы теории целых чисел


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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