Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Контроль над исключительными ситуациями
Для контроля над исключительными ситуациями в группе операторов Паскаля применяется следующая конструкция: try операторы; Except обрабатываемые классы исключительных ситуаций; else оператор; end,- Ключевое слово try (попытка) обозначает начало блока контроля выполнения опе- раторов, следующих до ключевого слова except. В случае возникновения исключи- тельной ситуации происходит обращение к списку классов, перечисленных перед завершающим ключевым словом end. При этом выполняется действие, указанное для соответствующего класса, а затем управление передается первому оператору, следующему за завершающим ключевым словом end. Операторы, оставшиеся в части try. пропускаются. Если исключительные ситуации не встретились, то про- пускаются все действия, следующие за ключевым словом except. Если возникшая ситуация не относится ни к одному из явно обрабатываемых клас- сов, то выполняется команда Паскаля, указанная после ключевого слова else. Часть else в блоке try указывать не обязательно. Классы исключительных ситуаций, предназначенные для обработки, записываются в следующем формате: on название-класса do операторы; Таких классов может быть несколько, например: try Assert (Y о 5, ' '),- X:= 100 div Y; Except on EZeroDivide do ZeroProc; on EAssertionFailecl do begin Исключительные ситуации 1 79 ShowMessage('Ошибка # 22'}; X:- 0; end; else ShowMessage|'Непонятно что '); end; Если в операторе присваивания будет обнаружена попытка деления на ноль (для этого надо, чтобы значение переменной У было равно 0), то выполнится процедура ZeroProc, которая должна быть определена ранее. Если же значением переменной Y окажется число 5, то обработчиком исключительных ситуаций будет сгенерирован объект класса Е Assertion Failed и выполнится группа операторов в логических скоб- ках. Оператор X:= 100 div Y при этом будет пропущен. Если встретится какая-то другая исключительная ситуация, то выведется сообщение Непонятно что. Поиск класса подходящей исключительной ситуации осуществляется в последо- вательном порядке. Если возникшую ошибку можно отнести к нескольким клас- сам, то вызван будет обработчик для класса, расположенного первым, например: try X:= Y + Z; Except on EIntError do PI; on EIntOverflow do P2,- end; Если при выполнении оператора X:- Y + Z возникнет ошибка переполнения
EIntOverflow, то вызвана, тем не менее, будет подпрограмма Р1, потому что эта ошибка относится также и к классу EIntError, расположенному первым в списке за ключе- вым словом except. Можно создать единый обработчик для любой исключительной ситуации. Тогда блок try записывается так: try операторы; except действия,- end,- Например: try X:= 0; except GlobalProc; end; В случае возникновения во время исполнения оператора X:- 0 произвольной ис- ключительной ситуации вызывается процедура GlobalProc. 1 80 Урок 3. Отладке программ Иногда реализованной программистом обработки ошибки недостаточно. Тогда, ука- зав ключевое слово raise без параметра, можно передать управление стандартному обработчику Delphi 7: Try X:= 100 div У; Except on EZeroDivide do begin ShowMessage('Ошибка # 22'),- raise; end; end; После выдачи сообщения Ошибка # 22 исполнится стандартный обработчик ошибки EZeroDivide. Из текста обработчика ошибки можно генерировать другие исключительные ситу- ации, например: Try X:= У +• Z; Except on ElntError do raise EIntOverflow.Create('Возможно переполнение'); end; Если при сложении целых чисел, хранящихся в переменных Y и Z, возникнет ка- кая-то арифметическая ошибка (базовый класс ElntError), то в обработчике этой ошибки будет сгенерирована другая исключительная ситуация EIntOverflow, а обра- ботка ошибки ElntError завершится.
|
|||||
Последнее изменение этой страницы: 2017-02-21; просмотров: 191; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.147.85.175 (0.008 с.) |