I've never really used exceptions myself in Pascal (with the exception of
breaking out of deeply recursive function calls) so I don't know all the rules.
In this example lets say you call Test() which allocates some memory and then
calls out to another function in another unit which raises (the programmer
doesn't know this because FPC doesn't mark the function as throwing
exceptions). Now the Test() function will exit early before freeing the memory.
What are you supposed to do here? The only thing I can think of is to wrap
every function in try..finally which COULD raise an exception but that's a huge
mess because literally any function could raise.
====================================
procedure DoThis;
begin
raise Exception.Create('dead');
end;
procedure Test;
begin
TObject.Create;
// call some code in other unit which raise an exception
DoThis;
end;
begin
try
Test;
except
writeln('failed'); // TObject now leaks
end;
end.
Regards,
Ryan Joseph
_______________________________________________
fpc-pascal maillist - [email protected]
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal