Delphi: Példa kivételkezelésre

Programozással kapcsolatos cikkek / Delphi (184 katt)

Nemrégiben letöltöttem az Embarcadero® Delphi 10.3 Community verzióját. Így hosszú évek elteltével ismét lehet ingyenesen - és jogtisztán - próbálgatni a legújabb Delphi fejlesztői környezet lehetőségeit.

Próbaképpen írtam egy rövid programot, amelyben az exception handling lehetőségét teszteltem. A konzolos program bekér két számot a felhasználótól, majd megpróbálja kiszámolni a két szám hányadosát. Ha hiba történik, pl. nem számot adott meg a felhasználó, vagy nullával próbál osztani, akkor a program elkapja a kivételt, és kiír egy viszonylag jól értelmezhető hibaüzenetet.

A program listája a következő:

program ExceptionExample;

{$APPTYPE CONSOLE}

{$R *.res}

uses
System.SysUtils;

var aText : string;
bText : string;
a : double;
b : double;
res : double;

begin
// A really simple Delphi exception handling example
// Kapitany, 2019.01.16.
Write('a = ');
Readln(aText);

Write('b = ');
Readln(bText);

try
a:=StrToFloat(aText);
b:=StrToFloat(bText);

res:=a / b;

Writeln('a / b = ' + FloatToStr(res));

except
on e : EConvertError do
Writeln('Invalid number!');

on e : EZeroDivide do
Writeln('Division by zero error!');

on E: Exception do
Writeln('Error: ' + E.Message);
end;

Readln;
end.



Másképpen is meg lehet írni ezt a programot, néhány helyen egy kicsit egyszerűsítve rajta:

program ExceptionExample2;

{$APPTYPE CONSOLE}

{$R *.res}

uses
System.SysUtils;

var a : double;
b : double;

begin
// A really simple Delphi exception handling example
// Kapitany, 2019.01.16.
try
Write('a = ');
Readln(a);

Write('b = ');
Readln(b);

Writeln('a / b = ', FloatToStr(a / b));

except
on e : EInOutError do
Writeln('Invalid number!');

on e : EZeroDivide do
Writeln('Division by zero error!');

on E: Exception do
Writeln('Error: ' + E.Message);
end;

Readln;
end.


Előző oldal Kapitány