[Lazarus] Assignment on exception (was Re: exception handling in constructor)
waldo kitty
wkitty42 at windstream.net
Sat Mar 2 18:34:47 CET 2013
On 3/2/2013 08:25, Xiangrong Fang wrote:
> I guess there is really a bug, see the following:
> ==============================
> f := 123;
> try
> f := ln(0);
> except
> end;
> //WriteLn(f);
> //{
> if f = 123 then
> WriteLn('f=123, not modified')
> else
> WriteLn('f is modified to:', f);
> //}
> ===============================
>
> If I just WriteLn(f), it output Nan, I think there is some magic happening here.
>
> If I try to use if-then on f, then I get:
>
> An unhandled exception occurred at $000000000040028C :
> EDivByZero : Division by zero
> $000000000040028C line 18 of project1.lpr
i am unable to reproduce this...
Lazarus 1.1 r39940 FPC 2.6.0 i386-win32-win32/win64
i started a new Simple Program project and pasted your above code into it...
C:\Documents and Settings\nil>LOCALS~1\Temp\project1
f=123, not modified
program Project1;
var
f : extended;
begin
f := 123;
try
f := ln(0);
except
end;
//WriteLn(f);
//{
if f = 123 then
WriteLn('f=123, not modified')
else
WriteLn('f is modified to:', f);
//}
end.
so i started a new Program project and again...
C:\Documents and Settings\nil>LOCALS~1\Temp\project1
f=123, not modified
program Project1;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes
{ you can add units after this };
var
f : extended;
begin
f := 123;
try
f := ln(0);
except
end;
//WriteLn(f);
//{
if f = 123 then
WriteLn('f=123, not modified')
else
WriteLn('f is modified to:', f);
//}
end.
what am i missing??
More information about the Lazarus
mailing list