mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-06 20:38:20 +02:00
67 lines
1.2 KiB
ObjectPascal
67 lines
1.2 KiB
ObjectPascal
program ExceptPrg;
|
|
{$IFDEF TEST_WITH_HPLUS}
|
|
{$H+}
|
|
{$ELSE}
|
|
{$H-}
|
|
{$ENDIF}
|
|
|
|
//{$DEFINE TEST_NO_EXCEPTION_TYPE}{$DEFINE TEST_NO_POINTER_VAR}{$DEFINE TEST_NO_EXCEPTION_TYPE}{$DEFINE TEST_NO_EXCEPTION_VAR}
|
|
uses sysutils;
|
|
|
|
{$IFnDEF TEST_NO_EXCEPTION_TYPE}
|
|
type
|
|
MyESome = class(Exception) end;
|
|
MyEOther = class(Exception) end;
|
|
{$ENDIF}
|
|
|
|
var
|
|
i: integer;
|
|
{$IFnDEF TEST_NO_POINTER_VAR}
|
|
p: pointer; // ensure pointer is in symbol info
|
|
{$ENDIF}
|
|
{$IFnDEF TEST_NO_STRING_VAR}
|
|
s: string[100];
|
|
{$ENDIF}
|
|
{$IFnDEF TEST_NO_EXCEPTION_VAR}
|
|
x: Exception;
|
|
{$ENDIF}
|
|
|
|
{$IFnDEF TEST_NO_EXCEPTION_TYPE}
|
|
procedure foo;
|
|
var a: string;
|
|
begin
|
|
a:= 'abc üü {[''[{ \n\t'#13#9'#';
|
|
raise MyESome.create(a);
|
|
end;
|
|
{$ENDIF}
|
|
|
|
begin
|
|
{$IFnDEF TEST_NO_POINTER_VAR}
|
|
p := nil;
|
|
{$ENDIF}
|
|
//foo;
|
|
|
|
try
|
|
{$IFnDEF TEST_NO_EXCEPTION_VAR}
|
|
x := Exception.Create('foo');
|
|
raise x;
|
|
{$ELSE}
|
|
raise Exception.Create('foo');
|
|
{$ENDIF}
|
|
except
|
|
on e: Exception do begin
|
|
{$IFnDEF TEST_NO_STRING_VAR}
|
|
s := IntToStr(PtrInt(Pointer(e)));
|
|
writeln(e.Message + s);
|
|
{$ELSE}
|
|
writeln(e.Message);
|
|
{$ENDIF}
|
|
end;
|
|
end;
|
|
writeln(1);
|
|
{$IFnDEF TEST_NO_EXCEPTION_TYPE}
|
|
foo;
|
|
{$ENDIF}
|
|
writeln(2);
|
|
end.
|