Subject: [fpc-pascal]exception handling
> 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; - did you include the sysutils unit? - afaik readln just raises runtime error which is unspecified according to the docs; eventually an EIOError (or similar if this does not exist) because this behaviour can be turned on/off with $I+/-. But to be sure, you might want to catch general exceptions. - do the following: s: String; i : Integer; code : Word; try readln(s); i := StrToInt(s); catch on EIOError ... end; or {$I-} readln(i); {$I+} if (IOResult <> 0) then ... // IOResult (hopefully) contains an error number in case of an I/O error or readln(s); val(s, i, code); if (code <> 0) then Error... But this has not been verified but it should be about right.... Regards, Thomas _______________________________________________ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal