Этот код Delphi компилируется и работает как положено.
program RaiseLabel;
uses FastMM4, Windows, StdCtrls;
function CreateLabel(const S: string): TLabel;
begin
Result := TLabel.Create(nil);
Result.Caption := S;
end;
begin
try
raise CreateLabel('Strange exception example');
except
on L: TLabel do begin
MessageBox(0, PChar(L.Caption), 'TLabel', MB_OK);
end;
end;
end.
Мой вопрос заключается в том, почему обработка исключений не ограничивается созданием объекта исключения, являющегося потомком класса Exception.(Я использовал FastMM в режиме полной отладки, чтобы проверить, не вызывает ли эта программа утечки памяти - нет.)