[fpc-pascal]exception handling
kractor
baron.kractor at cogeco.ca
Wed Mar 17 15:55:32 CET 2004
Michael Van Canneyt wrote:
>On Tue, 16 Mar 2004, kractor wrote:
>
>
>
>>spent a few moments going over the docs in the manual re: exception
>>handling. for some reason it just doesn't seem to be sinking in, as
>>nothing i've tried as of yet has managed to stop prog from crashing when
>>data in input that's of a different type than program is expecting
>>(string as opposed to integer, for example).
>>
>>as i said, i'm pretty sure that its something really small and obvious,
>>i'll include a few lines here ... maybe someone can spot my mistake ...
>>pretty sure its the EConvertError and that there's a pre-defined error
>>type that I just haven't come across yet.
>>
>> try
>> readln(NewAlbum.Year);
>> except
>> on EConvertError do NewAlbum.Year := 0;
>> end;
>>
>>
>
>This should be:
>
>
> try
> readln(NewAlbum.Year);
> except
> on E : EConvertError do NewAlbum.Year := 0;
> end;
>
>Michael.
>
>_______________________________________________
>fpc-pascal maillist - fpc-pascal at lists.freepascal.org
>http://lists.freepascal.org/mailman/listinfo/fpc-pascal
>
>
>
tried your suggestion and when i attempted to input string when prog
expecting integer value, it gave following error
An unhandled exception occurred at 0x004012CC :
EInOutError : Invalid input
so, i tried changing the EConvertError to EInOutError, little code paste
follows
try
readln(NewAlbum.Year);
except
on E : EInOutError do NewAlbum.Year := 0;
end;
write('label: ');
readln(NewAlbum.alLabel);
write('tracks: ');
readln(NewAlbum.NumTracks);
what's happening now is that when "invalid" data type is entered which
triggers the exception handle, the program is "skipping" the
readln(NewAlbum.alLabel) command and resuming apparently normal
operations on the very next line [write('tracks: ');]. when valid data
is entered, the program naturally doesn't trigger the exception handle
and everything works normally.
More information about the fpc-pascal
mailing list