[prev] [prev-tail] [tail] [up]

### 11.5 Exception classes

The sysutils unit contains a great deal of exception handling. It defines the following exception types:

            Exception = class(TObject)
             private
               fmessage : string;
               fhelpcontext : longint;
             public
               constructor create(const msg : string);
               constructor createres(indent : longint);
               property helpcontext : longint read fhelpcontext write fhelpcontext;
               property message : string read fmessage write fmessage;
            end;
            ExceptClass = Class of Exception;
            { mathematical exceptions }
            EIntError = class(Exception);
            EDivByZero = class(EIntError);
            ERangeError = class(EIntError);
            EIntOverflow = class(EIntError);
            EMathError = class(Exception);

The sysutils unit also installs an exception handler. If an exception is unhandled by any exception handling block, this handler is called by the Run-Time library. Basically, it prints the exception address, and it prints the message of the Exception object, and exits with a exit code of 217. If the exception object is not a descendent object of the Exception object, then the class name is printed instead of the exception message.

It is recommended to use the Exception object or a descendant class for all raise statements, since then the message field of the exception object can be used.

[prev] [prev-tail] [front] [up]