Учебные примеры и проекты не включают обработки ошибок. На практике, при разработке промышленных программ, серьёзное внимание уделяется контролю ошибок, возникающих в процессе работы программы. Ошибочные ситуации, когда основной алгоритм программы не может быть выполнен, называются исключениями.
С целью обработки исключений, задача каждого фрагмента программы должна быть расширена следующим образом: ”выполнить поставленную задачу, если она может быть решена или сообщить о невозможности выполнения”. В Pascal без объектов для обеспечения диагностики невозможности выполнения основной задачи чаще всего создают систему контроля ошибок. Такая система состоит из глобальной целочисленной переменной для кода ошибки и трех функций: установить код ошибки, получить код последней ошибки, сбросить код ошибки. Иногда в неё добавляется текстовое сообщение, помогающее понять причину ошибки, а так же средства передачи управления.
Рассмотрим для примера как изменится функция распечатки города из предыдущего параграфа.
Из 11 строк мы получили 30, т.е. объем увеличился в три раза. Для разных функций это соотношение будет разным, но общее правило состоит в том, что чем сложнее подпрограмма, тем большую долю всего кода будет занимать обработка ошибок.
Другой недостаток функции Print в том, что трудно разделить собственно выполнение задачи и обработку ошибок. Этого можно избежать используя оператор goto с мнемоничными именами меток, но тогда нарушится каноническая структура программы.
Для решения подобных проблем Delphi предоставляет систему структурированной обработки исключений. Цель состоит в том, чтобы разделить код направленный на выполнение задачи и код для обработки ошибок, переложив большую часть работы с программиста на компилятор.
В Delphi эта идея весьма удачно соединена с объектным программированием — при возникновении исключения программа создает объект потомок класса Exception, который несет всю необходимую информацию об ошибке, и передает его в блок обработки. Программист может сам определять новые классы ошибок и создавать исключительные ситуации. Рассмотрим эту систему, начиная с интерфейса класса Exception.
Опубликовал Kest
September 01 2011 11:51:37 ·
0 Комментариев ·
8653 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.