[fpc-pascal] Finally, exceptions and so on.
Mark Morgan Lloyd
markMLl.fpc-pascal at telemetry.co.uk
Thu May 14 13:18:06 CEST 2015
Michael Van Canneyt wrote:
> On Thu, 14 May 2015, Mark Morgan Lloyd wrote:
>
>> Starting off with this fragment
>>
>> begin // Start of procedure/function
>> try
>> ...
>> if something then
>> exit;
>> ...
>> finally
>> ...
>> end
>> end;
>>
>> My understanding is that exit "magically" transfers control into the
>> finally block before exiting the procedure. However to state the
>> obvious, in this fragment
>>
>> begin // Start of procedure/function
>> try
>> ...
>> if something then
>> exit;
>> ...
>> except
>> ...
>> end
>> end;
>>
>> control doesn't go via the except block.
>
> That is as designed. There is no exception, so no need to go in the
> exception.
Yes, obviously. However I'm interested in the cases where (1) a
try-finally is embedded in a try-except and (2) try-except is embedded
in try-finally, and the order that exit and any potential equivalents
disentangles things.
>> Is there a single place in the documentation where this sort of
>> behaviour is described and prioritised, taking into account interfaces
>> etc.?
>
> http://www.freepascal.org/docs-html/ref/refse103.html#x214-22400017.3
>
> What does 'taking into account interfaces' have to do with exceptions ?
> They are unrelated.
Except that- as I understand it- when the reference count is decremented
to oblivion, it will be destroyed by "magic" code in the context of the
block it was created in. Same obviously applies to strings, dynamic
arrays and so on. Are there any other cases where this sort of thing
happens?
I've got a horrible feeling that I'm not expressing my question well.
--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk
[Opinions above are the author's, not those of his employers or colleagues]
More information about the fpc-pascal
mailing list