Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Искусственная генерация исключений

Читайте также:
  1. Генерация RSA ключа
  2. Генерация вектора скорости молекулы и координат точки влета
  3. Генерация идей
  4. Генерация на сверхзвуковых частотах
  5. Генерация отчетов по UDP.
  6. Генерация тумо
  7. ИСКУССТВЕННАЯ ВЕНТИЛЯЦИЯ ЛЁГКИХ РУЧНЫМИ АППАРАТАМИ
  8. Искусственная радиоактивность
  9. Регенерация
  10. Регенерация отдельных тканей и органов
  11. Регенерация теплоты в цикле ГТУ.



Try

Зачистка в разделе модуля Finalization

В этом разделе можно проверить, завершается программа нормально (ExceptAddr=Nil) или аварийно, используя функцию ExceptAddr. Для этого следует указать хотя бы пустой раздел модуля Initialization.

1.6.6. Блок обработки исключений Try ‑ Except ‑ End

Try<операторы> Except<обработка исключений> [Else<операторы>]End; Операторы, которые указаны после Except, выполняются только при аварийном завершении работы операторов, указанных перед Except. Для задания обработки исключений в этом блоке используются операторы:

On <класс исключений> Do <оператор> или другие операторы; смешение операторов On с другими операторами не допускается.

Операторы, указанные после Else, выполняются для всех, не перехва­чен­ных ранее исключений.

Пример:

Var A,C,B: Shortint;

Begin A:=1; B:=100;

C:=StrToInt(Edit1.Text); A:=(B Div C); //обычное выполнение

Except //начало блока обработки исключений

On EConvertError Do ShowMessage('Ошибка ‑ не число! Повторите ввод');

On EdivByZero Do ShowMessage('Ошибка ‑ ноль! Повторите ввод');

On EIntOverFlow Do If (B*C)>=0 Then A:=127 Else A:=‑128;

End; //окончание блока

Некоторые исключения имеют дополнительные свойства (поля). Например, исключение EinOutError имеет свойство ErrorCode типа Integer с кодом ошибки ввода‑вывода. Для использования таких свойств. Оператор On записывается в виде:

On <метка>:<класс исключений> Do

<операторы с конструкциями <метка>.<свойство>;

Пример контроля за операциями файлового ввода - вывода:

On 10: EinOutError Do //начало обработки исключений при вводе ‑ выводе

Begin Case 10.Errorcode Of //оператор выбора варианта обработки

2: S:=’Файл ‘+S+’ не найден!’; //код ошибки=2

106: S:=’Ошибка ввода при работе с файлом ‘+S; //ошибка=106

End; //окончание обработки вариантов ошибок

ShowMessage(S); //вывод сообщения об ошибке

End; //окончание обработки исключений при вводе‑выводе

Допускаются конструкции вида:

Try ... Try ... Finally ... End; Except ... [Else ... ] End;

Допускается вложенность блоков Try...Except. В этом случае внача­ле ищется обработчик в блоке, в котором создалось исключение, и если его нет, то продолжается поиск в обрамляющем блоке, и. т. д.

Для отладки обработки исключений используется оператор:

Raise[<тип исключения>[.<имя конструктора>(<параметры>)]];

Если исключение не указано, то повторно генерируется ранее обработанное исключение по схеме:

Try <операторы внешнего блока>



Try <операторы внутреннего блока>

Except //исключения внутреннего блока

On <тип исключения> Do //начало обработки исключения

Begin <обработка исключения внутреннего блока>

Raise; //повторная генерация исключения

End; //окончание обработки исключения

End; //окончание обработки всех исключений внутреннего блока

<операторы внешнего блока>

Except //исключения внешнего блока и повторно сгенерированное

On <тип исключения> Do <обработка исключений обоих блоков>

End; //окончание обработки всех исключений внешнего блока

 

Пример проверки вводимого значения для делителя:

If (Edit1.Text=’’) Then Raise EZeroDivide.Create(‘Пустое значение’);

Если в поле Edit1 будет пустое значение, то сгенерируется исклю­че­ние EzeroDivide и появится окно с текстом ‘Пустое значение’.

 





Дата добавления: 2014-12-08; Просмотров: 92; Нарушение авторских прав?;


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



ПОИСК ПО САЙТУ:


Читайте также:



studopedia.su - Студопедия (2013 - 2017) год. Не является автором материалов, а предоставляет студентам возможность бесплатного обучения и использования! Последнее добавление ip: 54.156.47.142
Генерация страницы за: 0.006 сек.