[Haskell-cafe] runInteractiveCommand dying uncatchably?
Evan Martin
martine at danga.com
Sat Mar 1 13:39:37 EST 2008
If I run the following program, it never prints "done". If I
uncomment the commented line, it does.
import Prelude hiding (catch)
import Control.Exception
import System.Process
import System.IO
demo = do
putStrLn "starting"
(inp,out,err,pid) <- runInteractiveCommand "nonesuchcommand"
putStrLn "writing to in on bad command"
hPutStr inp "whatever"
-- putStr "flushing"
hFlush inp `catch` \e -> do print e; return ()
putStrLn "done"
main = demo `catch` \e -> do print e; return ()
On my machine the output is:
$ runhaskell test.hs
starting
writing to in on bad command
$
It appears to exit at the hFlush call. (hClose has the same behavior.)
I find this surprising -- I'd expect, even if I'm using an API
incorrectly, to get an exception.
More information about the Haskell-Cafe
mailing list