Help with Exceptions on I/O

Thomas L. Bevan
Thu, 14 Aug 2003 15:07:33 +0000

Hash: SHA1

Your problems might be due to buffering.
Try setting the stdin and stdout to 'NoBuffering'.

BTW, how are your exceptions getting thrown?


On Tue, 12 Aug 2003 05:20 pm, Alexandre Weffort Thenorio wrote:
> I have a program which creates textfiles out of other files. Since the
> program is runned from windows I output some text strings (Like "File
> created succefully") and I need to stop the program before it quits so that
> the user can read the line outputted to know what went on and then he can
> press ENTER to quit the program.
> I managed to do this fine if no error occurs but when a error occurs I am
> having problems.
> The code goes like that
> main :: IO()
> main =catch (do
>                      Do all the needed stuff here
>                      putStr "File created Successfully. Press RETURN to
> quit"
>                      dummy <- getLine --Halts the program so the user can
> read the above line)
>                      putStr "Exiting now..." --needed since I can't finish
> a do function with the "dummy<- getLine" line) (\_ -> do putStr "\nFile not
> found. Press RETURN (ENTER) to quit."
>      dumb <- getLine
>      putStr "\nExiting...")
> So when the program runs, if the input file is found the program writes
> successfull creation of file but if the file doesn't exist, after the user
> gives the input filename and press enter, the program creates a new line
> and Halts (Probably because of the getLine function) without writing out
> anything, then when the user press ENTER again it writes the line at the
> first putStr (File not...), then writes the next putStr line under it
> (Exiting...) and exits. I don't know why it doesn't wirte the first line,
> halts and then when user press enter it writes the second and quits.
> Can anybody help me as I am not very familiar with exception and catches.
> Another question I have is: Is there any other function rather than getLine
> that halts a program and continues when a user press any key (Instead of
> ENTER) and besides this is an ugly code since getLine wasn't made for that
> but I couldn't find anything else myself.
> Thank you in advance.
> Best Regards
> Alex
> _______________________________________________
> Haskell mailing list
Version: GnuPG v1.2.2 (GNU/Linux)