[fpc-devel] Different handling of try..except depending on OS?
Michael Van Canneyt
michael at freepascal.org
Thu Dec 10 11:53:32 CET 2020
On Thu, 10 Dec 2020, Tomas Hajny via fpc-devel wrote:
> On 2020-12-10 07:34, Sven Barth via fpc-devel wrote:
>> Am 09.12.2020 um 23:45 schrieb Bart via fpc-devel:
>>> Compiled with fpc 3.2.0 on Windows it will output (both 32 and 64
>>> bit):
>>> Runtime error 201 at $004015F1
>>> $004015F1
>>> $00407307
>>>
>>> Compiled with fpc 3.2.0 on linux X86_64 it will output
>>> Except block
>>> Finally block
>>>
>>> On Windows you need to include the sysutils unit to execute the except
>>> and finally block.
>>
>> That is correct, because without the SysUtils unit (which declared the
>> Exception type) the RTL can't convert the triggered runtime error to
>> an exception type that can be caught inside the try ... except ... end
>> block.
> .
> .
>
> Is the current behaviour on "other" (non-MS Windows) targets really
> correct (I checked under OS/2 for both 3.2.0 and trunk and it behaves
> the same way as Linux)? Including SysUtils should result in converting a
> run-time error to an exception. If SysUtils is not included, run-time
> error should be raised regardless from the try..except block (as it does
> under MS Windows, but not on other platforms at the moment), shouldn't
> it? Shouldn't the try..except construct by default (i.e. without using
> SysUtils) catch only explicitly raised exceptions?
Yes, it should. it's definitely a bug.
Michael.
More information about the fpc-devel
mailing list