[Haskell-beginners] Better error messages

Michael Orlitzky michael at orlitzky.com
Thu Dec 29 21:57:47 CET 2011


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





More information about the Beginners mailing list