Just found a bug of mine I was wondering about since about three days, and wanted to share the fun with you:
-- 8< --
// "How to raise the wrong exception" or
// "Why automatic type conversion really sucks"
{$MODE OBJFPC}
program
Exception_Fun;
uses
SysUtils;
function Exception_Message : AnsiString;
begin
exit ('Will never show up, of course.');
end {Exception_Message};
type
Not_Now = class (SysUtils.Exception);
begin
try
raise Not_Now (Exception_Message);
except
on e : Not_Now do
WriteLn (StdErr, 'Caught it! Strange.');
end {try};
end {Exception_Fun}.-- 8< --
No error, no warning, no note, no hint: Of course, a class type is just a pointer, AnsiStrings can be pointers. Pointers can be converted to any other pointer type... *crash*
