[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