[Haskell-beginners] Better error messages

Chaddaï Fouché chaddai.fouche at gmail.com
Thu Dec 29 21:43:40 CET 2011


On Thu, Dec 29, 2011 at 9:25 PM, Peter Hall <peter.hall at memorphic.com> 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?

Don't use partial functions (functions that can fail on some input)
except if you're sure they won't fail (and even then you may be better
off not using them...), here you can use pattern matching :

> main = do
>    args <- getArgs
>    case args of
>      [file] -> -- etc
>      _ -> error "You should call this program with one file argument !!"

In this particular case (arguments parsing), if you ever find yourself
with more complicated argument handling to do, consider using one of
the good packages that make this easy and safe to do like cmdargs.

-- 
Jedaï



More information about the Beginners mailing list