Пример 11.1.
Создать программу обработки исключений, использующую инструкцию try…except. Проект – консольное приложение.
Вариант задания:
f1(x) = 1/sin(x), h1 = p/8, тип данных для f1(x) Real.
f2(x) =100+x, h2 = 20, тип данных для f2(x) Byte
Листинг программы
program prg_11_1;
{$mode objfpc}{$H+}
uses
Classes, SysUtils, RusTrans;
const
h1=pi/8;
h2=20;
var
f:boolean=false;
i,imax,imin,i_error:integer;
y:array[-10..10] of real;
b:array[-10..10] of byte;
begin
writeln(Rus(‘Введите Imin и Imax в пределах -10…10′));
write(‘ Imin=’);
readln(imin);
write(‘ Imax=’);
readln(imax);
try
for i:=imin to imax do
begin
i_error:=i; // i, если ошибка
y[i]:=1/sin(i*h1);
end;
for i:=imin to imax do
begin
i_error:=i; // i, если ошибка
b[i]:=100+i*h2;
end;
except
on EZeroDivide do
begin
writeln(Rus(‘Деление на 0′));
writeln(Rus(‘при i=’),i_error);
f:=true;
end;
on ERangeError do
begin
writeln(Rus(‘Ошибка диапазона’));
writeln(Rus(‘при i=’),i_error);
f:=true;
end;
end;
if not f then writeln(‘OK’);
readln;
end.
Консоль перед закрытием программы (3 варианта):
- исключений нет,
- ошибка деления на 0,
- ошибка диапазона.