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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

 

Исключения EAbort и функция Abort

Если исключение EAbort не обрабатывается, то оно выполняется без всякого сообщения (молчаливое прерывание). Функция Abort искус­ствен­но генерирует это исключение, которое прерывает работу текущей под­прог­раммы и все вызвавшие ее подпрограммы, возвращая управление на самый верх, т.е. происходит возврат из глубоко вложенных подпрограмм.

Пример: If B=0 Then Abort;

При необходимости это исключение можно обработать, указав в разделе Except блока Try...Except оператор On EAbort Do....

Создание нового типа исключения

Новый тип исключения создается в разделе типов модуля в виде:

Type <имя нового типа исключения>=Class(Exception) [<свойства> End];

Пример контроля за присутствием информации в поле ввода Edit1:

Type EPusto=Class(Exception); //создание собственного типа исключения

... If Edit1.text='' Then Raise EPusto.Create('Пустое поле');//генерация искл.

Else A:= Edit1.text; //использование значения поля ввода Edit1.

Пример создания нового исключения ETError со свойством NError:

Type ETError=Class(Exception) Public NError: Integer; End;//создание искл.

Var EError: ETError;... //объявление переменной типа ETError

Try... If Err>0 Then //условие наличия ошибки. Err ‑ номер ошибки

Begin EError:=ETError.Create(‘Ошибка!’);//текст сообщения

EError.NError:=Err; //запоминание ошибки в свойстве

Raise EError; //генерация исключения и переход в Except

End;...

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

On ETError Do //обработка созданного исключения ETError

Case EError.Nerror Of //варианты обработки ошибки

1:... //обработка ошибки под номером 1

2:... //обработка ошибки под номером 2

...

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

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

Вопросы для самопроверки и контроля

Вопросы для самопроверки

1. Каково назначение оператора Try?

Контрольные вопросы

1. Каково назначение раздела Finally в операторе Try?

Основные стандартные функции и процедуры

Для сокращения описания процедур и функций используются имена: S,S1,S2 ‑ строковые параметры, F - файловые переменные и H ‑ дескрип­то­­ры файлов, N ‑ целочисленные переменные.

Математические функции

Abs(R: real): real ‑ возвращает абсолютное значение аргумента.

ArcTan(R: real): real ‑ возвращает арктангенс аргумента.

Cos/Sin(R: real): real ‑ возвращает косинус/синус аргумента.

Exp(R: real): real ‑ возвращает экспоненту аргумента.

Frac/Int(R: real): real ‑ возвращает дробную/целую часть аргумента.

Ln(R: rеal): rеal ‑ возвращает натуральный логарифм аргумента.

Pi: real ‑ возвращает значение числа Pi=3.1415926535897932385.

Randomize ‑ инициализирует генератор случайных чисел.

Random[(R: word)] ‑ возвращает случайное число от 0 до R (1). Пред­вари­тель­но нужно выполнить функцию Randomize.

Round(R: real): longint ‑ округляет значение R до ближайшего целого.

Sqr(R: real): real ‑ возвращает аргумент в квадрате.

Sqrt(R: real): real ‑ возвращает квадратный корень аргумента.

Odd(X): Boolean ‑ проверяет, является ли аргумент нечетным числом.

Trunc(B: real): longint ‑ усекает значение до целого путем отбрасывания дробной части.

Форматирование

Строка форматирования

Строка форматирования определяет порядок редактирования значе­ний аргументов при формировании форматированной строки.

Она содержит обычные символы, которые переносятся в формати­ро­ван­ную строку и спецификаторы (шаблоны) формата редактирования аргу­мен­тов, который имеет вид:

%[<индекс>:][‑][<ширина поля>[.<N‑точность>]<тип>]

[ ] ‑ выравнивание результата влево в поле вывода.

<индекс> ‑ задает порядковый номер редактируемого аргумента (отсчет с нуля). Это позволяет пропускать отдельные аргументы или повторять редактирование.

<ширина поля> ‑ задает минимальное число символов результата. При меньшей длине происходит добавление пробелов слева или справа.

<тип> - определяет формат редактирования аргумента:

d ‑ десятичное целое длиной не менее N знаков;

e ‑ научный формат: [‑]d.dddE+ddd или [‑]d.dddE‑ddd. (N= 15);

f ‑ вещественное число вида [‑]ddd.ddd..... (N= 2);

g ‑ обобщенный формат e или f с наименьшим размером записи;

n ‑ аналогичен f, но дополнительно выводятся разделители‑запятые тысяч;

m ‑ формат записи денежных сумм;

p ‑ указатели в виде <номер сегмента>: <смещение>;

s ‑ формат строки для аргументов типа символ или строка. N – мак­си­маль­ное число вставляемых символов;

x ‑ шестнадцатеричное целое длиной не менее N знаков.

 



Поделиться:


Последнее изменение этой страницы: 2017-02-08; просмотров: 317; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.119.107.96 (0.055 с.)