IOの例外をキャッチしたくてはまった。
import System.Environment import Control.Exception import Prelude hiding (catch) import System.Exit main = do (file:_) <- getArgs catch (putStr =<< readFile file) $ \e -> return (e::SomeException) >> print ("Error on reading file: " ++ file) -- main = do -- (file:_) <- getArgs -- catch (putStr =<< readFile file) $ \_ -> print ("Error on reading file: " ++ file)
例外の型を指定しないといけないらしい。