«аочное дистанционное образование с получением государственного диплома через Internet










ѕолучить информацию о поступлении
 
√лавна€ Ќовости  арта сайта ‘отоальбом √остева€ книга  онтакты

исо 9001 ћосква

 

ѕримеры исключений с Try ... Finally ...

¬ конструкции Try-Finally, инструкци€ Finally выполн€етс€ независимо от того, что произойдет в предложении Try.

try
{операторы, способные создать исключительную ситуацию};
finally
{защищенные операторы, выполн€емые в любом случае};
end;

ѕ–»ћ≈– 1: Ќаписать программу дл€ вычислени€ результата от делени€ одного числа на другое. „исла ввод€тс€ с клавиатуры. ѕри выполнении делени€ использовать конструкцию try Е finally

var
number_1, number_2 :Integer;
result:real;
begin
number_1:=StrToInt(Edit1.Text);
number_2:=StrToInt(Edit2.Text);
Try
result := number_1/ number_2;
ShowMessage(' result = '+FloatToStr(result));
Finally
ShowMessage('¬торое число равно нулю. ƒеление на число ноль. ¬ведите другое число и повторите попытку');
end;
end;

 
ѕ–»ћ≈– 2: »справить программу примера 1, таким образом, чтобы при вводе чисел предусмотреть возможность обработки возникшего исключени€ (например, вместо целого числа ввели дробное, или вместо числа ввели букву)
 
var
number_1, number_2 :Integer;
result:real;
begin
Try
number_1:=StrToInt(Edit1.Text);
number_2:=StrToInt(Edit2.Text);
Try
result := number_1/ number_2;
ShowMessage(' result = '+FloatToStr(result));
Finally
ShowMessage('¬торое число равно нулю. ƒеление на число ноль. ¬ведите другое число и повторите попытку');
end;
Finally
ShowMessage('¬ы ввели не правильные исходные данные');
end;
end;

ѕримечание: ¬ программе использованы вложенные инструкции Try:

 
ѕ–»ћ≈– 3: ƒеление на ноль с предложением finally.
 
var
number, zero : Integer;
begin
// ѕопытка делен€ целого числа на нуль - чтобы подн€ть исключение
number := -1;
Try
zero := 0;
number := 1 div zero;
ShowMessage('number / zero = '+IntToStr(number));
Finally
if number = -1 then
begin
ShowMessage('„ислу не было присвоено значение - использование значени€ по умолчанию');
number := 0;
end;
end;
end;

ѕримечание: „ислу не было присвоено значение - использование значени€ по умолчанию. «атем, программа заканчиваетс€ с сообщением об ошибке EDivByZero -, предложение finally не выловило ошибку.

 
ѕ–»ћ≈– 4: ѕечать

Try

{операци€ печати}

finally

on E: Eprinter do

Showmessage(E.Message); //¬ывести сообщение об ошибке

end;

 
ѕ–»ћ≈– 5:
 
Object1 := TObject1.Create;
try
Object2 := TObject2.Create;
try
Object1.DoWork;
Object2.DoWork;
finally
Object2.Free;
end;
finally
Object1.Free;
end;
 
ѕ–»ћ≈– 6:

try
try
EnumThreadWindows(CurrentThreadID, @Disable, 0);
Result := TaskWindowList;
except
EnableTaskWindows(TaskWindowList);
raise;
end;
finally
TaskWindowList := SaveWindowList;
TaskActiveWindow := SaveActiveWindow;
end;

”знать как сэкономить в кризис моно на сайте ekonom-it.ru

 онцептуальна€ модель UML ƒиаграммы последовательности   ооперативные диаграммы   омпонент OpenDialog  омпонент SaveDialog ѕример исключени€ с Try ... Except ... ”правл€ющие структуры €зыка Delphi Ѕазы данных в Delphi ќбщие сведени€ о базах данных ћодели данных 


 
     
   
 


ѕриглашаем прин€ть участие в круглом столе!
подробнее   >>>
 

»нститут ћенеджмента, Ёкономики и »нноваций начинает набор на курсы повышени€ квалификации!
подробнее   >>>
 

”важемые студенты јЌќ ¬ѕќ »ћЁи»!
подробнее   >>>
 

Ќачинаетс€ набор на курсы повышени€ квалификации!
подробнее   >>>
 

ѕриглашаем прин€ть участие в конференци€х!
подробнее   >>>
 


все новости...

 


–ассылки Subscribe.Ru
—овременное образование
ѕодписатьс€ письмом