Exit
Exit current subroutine.
Declaration
Source position: system.fpd line 45
procedure &Exit(const X: TAnyType);
procedure &Exit;
Description
Exit exits the current subroutine, and returns control to the calling routine. If invoked in the main program routine, exit stops the program. The optional argument X allows to specify a return value, in the case Exit is invoked in a function. The function result will then be equal to X.
In Object Pascal or Delphi modes, if the Exit statement is surrounded by one or more Try .. Finally constructs, the Finally blocks are executed, which means that if the finally blocks are used to free resources, then these resources will also be freed when Exit is called.
Note that although Exit is a compiler intrinsic (i.e. is treated specially) it is defined as an identifier in the system unit, hence it can be redefined.
Errors
None.
See also
Name | Description |
---|---|
Halt | Stop program execution. |
Example
Program Example21;
{ Program to demonstrate the Exit function. }
Procedure DoAnExit (Yes : Boolean);
{ This procedure demonstrates the normal Exit }
begin
Writeln ('Hello from DoAnExit !');
If Yes then
begin
Writeln ('Bailing out early.');
exit;
end;
Writeln ('Continuing to the end.');
end;
Function Positive (Which : Integer) : Boolean;
{ This function demonstrates the extra FPC feature of Exit :
You can specify a return value for the function }
begin
if Which>0 then
exit (True)
else
exit (False);
end;
begin
{ This call will go to the end }
DoAnExit (False);
{ This call will bail out early }
DoAnExit (True);
if Positive (-1) then
Writeln ('The compiler is nuts, -1 is not positive.')
else
Writeln ('The compiler is not so bad, -1 seems to be negative.');
end.
Example
{
Example 121:
Continue, break and exit are system procedures.
They can be redefined
}
procedure continue;
begin
Writeln('Continue');
end;
Procedure Exit;
begin
Writeln('exit');
end;
Procedure Break;
begin
Writeln('Break');
end;
begin
Repeat
Continue;
Break;
exit;
Until True;
end.