
On 12/29/11 15:42, Daniel Fischer wrote:
On Thursday 29 December 2011, 21:25:31, Peter Hall wrote:
If I have something like this
main = do args <- getArgs let file = args !! 0 -- etc...
And I run it without any arguments, I get an error message like this: "Prelude.(!!): index too large".
What's the best way to handle an error like this to give a better message back to the user?
main = do args <- getArgs case args of [] -> complain _ -> happiness
or
args <- getArgs if null args then complain else happiness
I've always used Control.Monad.when here, to avoid unnecessary nesting (or the alternative "do nothing"). E.g, main = do args <- getArgs when (null args) $ do putStrLn help_text exitWith $ ExitFailure exit_not_enough_args