Custom Errors in Pascal
Our first program demonstrates how to create and use custom errors. Here’s the full source code:
program CustomErrors;
uses
SysUtils;
type
TArgError = class(Exception)
private
FArg: Integer;
public
constructor Create(AArg: Integer; const AMessage: string);
property Arg: Integer read FArg;
end;
constructor TArgError.Create(AArg: Integer; const AMessage: string);
begin
inherited Create(AMessage);
FArg := AArg;
end;
function F(Arg: Integer): Integer;
begin
if Arg = 42 then
raise TArgError.Create(Arg, 'can''t work with it')
else
Result := Arg + 3;
end;
var
Result: Integer;
E: Exception;
begin
try
Result := F(42);
except
on E: TArgError do
begin
WriteLn(E.Arg);
WriteLn(E.Message);
end;
on E: Exception do
WriteLn('Error doesn''t match TArgError');
end;
end.In this example, we define a custom error type TArgError that inherits from the standard Exception class. It includes an additional Arg property to store the problematic argument.
The F function demonstrates how to raise our custom error when a specific condition is met (in this case, when the argument is 42).
In the main program, we use a try-except block to handle the error. We specifically catch TArgError to demonstrate how to access its custom properties.
To run the program, save it as CustomErrors.pas and compile it using a Pascal compiler like Free Pascal:
$ fpc CustomErrors.pas
$ ./CustomErrors
42
can't work with itThis example shows how to create and use custom error types in Pascal, allowing for more detailed error handling in your programs.
Comments powered by Disqus