[fpc-pascal] Re: Fpc Access Violation if AppConfigDir doesn't exist.

Giuliano Colla giuliano.colla at fastwebnet.it
Wed Feb 13 14:05:17 CET 2013


Sven Barth ha scritto:
> On 13.02.2013 10:11, Lukasz Sokol wrote:
>> On 13/02/2013 07:34, Michael Müller wrote:
>>
>>> I'm not sure if somebody else mentioned this already but I have the 
>>> feeling that Giuliano thinks that he has to decide to use try-finally 
>>> OR try-except but there are situations where you need both. One of 
>>> the criteria is if the object is local or global since for a global 
>>> object it is likely that you place the .Free (or for a global object 
>>> better FreeAndNil()) into a destructor or finalization section (which 
>>> means that you have to stop the program in case of an error and not 
>>> continue showing just a dialog) so you'll need only the try-except if 
>>> you want to catch the exception. In case of a local object you'll 
>>> ALWAYS have the lines
>>>
>>> Obj := Class.Create;
>>> try
>>>    // do some code
>>> finally
>>>    Obj.Free;
>>> end;
>>>
>>> otherwise you'll end up with memory leaks.
>>> If you want to catch the exception in this situation you'll put 
>>> try-except extra around try-finally so you'll end up with
>>>
>>> Obj := Class.Create;
>>> try
>>>    try
>>>      // do some code
>>>    finally
>>>      Obj.Free;
>>>    end;
>>> except
>>>    writeln('We have a problem);
>>>    halt the program or reraise the exception or raise a new one
>>> end;
>>>
>>> Regards
>>>
>> To developers:
>> How would a generalized/packed construct like
>>
>> try
>> [code block]
>> finally
>> [code block]
>> except
>> [code block]
>> end;
> 
> or what about
> 
> try
> [code block]
> except
> [code block]
> finally
> [code block]
> end;
> 

Python provides the following:
try
[code block]
except
[code block]
else
[code block]
finally
[code block]
end;

which can be used in any reasonable combination: just try..except, just 
try..finally just try..except..else etc.

The except..else is a very useful construct, because it provides a path 
to a code block to execute only if there were no previous errors.
This wouldn't break any existing applications, just add very useful 
features.

What fpc developers think about that?

Giuliano

-- 
Giuliano Colla

Before activating the tongue, make sure that the brain is connected 
(anonymous)



More information about the fpc-pascal mailing list