[Overview][Constants][Types][Classes][Procedures and functions][Variables][Index] | Reference for unit 'System' (#rtl)

# Exit

Exit current subroutine.

## Declaration

Source position: line 0

`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.

## Errors

None.

## See also

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.

Documentation generated on: Feb 26 2014