unit Except1F;
interface
uses SysUtils, Windows, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
ButtonDivide1: TButton;
ButtonDivide2: TButton;
ButtonRaise1: TButton;
ButtonRaise2: TButton;
Label1: TLabel;
Label2: TLabel;
procedure ButtonDivide1Click(Sender: TObject);
procedure ButtonDivide2Click(Sender: TObject);
procedure ButtonRaise1Click(Sender: TObject);
procedure ButtonRaise2Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
type
EArrayFull = class (Exception);
function DivideTwicePlusOne (A, B: Integer): Integer;
begin
try
Result := A div B;
Result := Result div B;
Result := Result + 1;
except
on EDivByZero do
begin
Result := 0;
MessageDlg ('Divide by zero corrected',
mtError, [mbOK], 0);
end;
on E: Exception do
begin
Result := 0;
MessageDlg (E.Message,
mtError, [mbOK], 0);
end;
end;
end;
procedure AddToArray (N: Integer);
begin
raise EArrayFull.Create ('Array full');
end;
procedure TForm1.ButtonDivide1Click(Sender: TObject);
begin
DivideTwicePlusOne (10, 0);
end;
procedure TForm1.ButtonDivide2Click(Sender: TObject);
var
A, B, C: Integer;
begin
A := 10;
B := 0;
C := A div B;
Caption := IntToStr (C);
end;
procedure TForm1.ButtonRaise1Click(Sender: TObject);
begin
try
AddToArray (24);
except
on EArrayFull do;
end;
end;
procedure TForm1.ButtonRaise2Click(Sender: TObject);
begin
AddToArray (24);
end;
end.
|