Студопедия

КАТЕГОРИИ:

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



Распознавание класса исключительной ситуации




Читайте также:
  1. II. Чрезвычайные ситуации на химически опасных объектах экономики и при использовании химического оружия
  2. III. Современное общество в ситуации постмодерна
  3. III. Характеристика миграционной ситуации.
  4. IV. Чрезвычайные ситуации на радиационно-опасных объектах
  5. А Общая характеристика класса Turbellaria.
  6. Амперметр класса точности 1,5 имеет 100 делений. Цена каждого деления 0,5 А. Определить предел измерения прибора, наибольшую абсолютную погрешность в точках 10, 30, 50, 70, 90
  7. Анализ ситуации и цели
  8. Анализ ситуации на основе имеющегося опыта и аналогов
  9. Анализ ситуации путем личного наблюдения и проведения эксперимента
  10. Биологические чрезвычайные ситуации ЭПИДЕМИИ

Распознавание класса исключительной ситуации выполняется с помощью конструкций

on <класс исключительной ситуации> do <оператор>;

которые записываются в секции обработки исключительной ситуации, например:

try

// вычисления с вещественными числами

except

on EZeroDivide do ... ; // обработка ошибки деления на нуль

on EMathError do ... ; // обработка других ошибок вещественной математики

end;

Поиск соответствующего обработчика выполняется последовательно до тех пор, пока класс исключительной ситуации не окажется совместимым с классом, указанным в операторе on. Как только обработчик найден, выпоняется оператор, стоящий за словом do и управление передается за секцию except...end. Если исключительная ситуация не относится ни к одному из указанных классов, то управление передается во внешний блок try...except...end и обработчик ищется в нем.

Обратите внимание, что порядок операторов on имеет значение, поскольку распознавание исключительных ситуаций должно происходить от частных классов к общим классам, иначе говоря, от потомков к предкам. С чем это связано? Сейчас поймете. Представьте, к чему приведет изменение порядка операторов on в примере выше, если принять во внимание, что класс EMathError является базовым для EZeroDivide. Ответ простой: обработчик EMathError будет поглощать все ошибки вещественной математики, в том числе EZeroDivide, в результате обработчик EZeroDivide никогда не выполнится.

На самом высоком уровне программы бывает необходимо перехватывать все исключительные ситуации, чтобы в случае какой-нибудь неучтенной ошибки корректно завершить приложение. Для этого применяется так называемый обработчик по умолчанию (default exception handler). Он записывается в секции except после всех операторов on и начинается ключевым словом else:

try

{ вычисления с вещественными числами }

except

on EZeroDivide do { обработка ошибки деления на нуль };

on EMathError do { обработка других ошибок вещественной математики };

else { обработка всех остальных ошибок (обработчик по умолчанию) };

end;

Учтите, что отсутствие части else соответствует записи else raise, которое нет смысла использовать явно. Мы со своей стороны вообще не советуем вам пользоваться обработкой исключительных ситуаций по умолчанию, поскольку все ваши приложения будут строиться, как правило, на основе библиотеки VCL, в которой обработка по умолчанию уже предусмотрена.




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





lektsii.com - Лекции.Ком - 2014-2021 год. (0.005 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты