Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 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; просмотров: 286; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.20 (0.006 с.) |