如何在Haskell中忽略异常或错误并继续IO操作?

时间:2016-02-08 21:39:56

标签: haskell

main :: IO ()
main = do
    res <- try (mapM_ (callProcess "pandoc") [["--help"],["-eoc"],["-exois"],["--help"]]) :: IO (Either SomeException ())
    case res of
        Right a -> print "done"
        Left e -> print "error"

在上面的代码中,命令pandoc的一些参数是错误的,pandoc会抛出错误。但我希望我的代码能够继续而不停在那里并完成mapM _

我应该使用什么异常处理?

我遇到的错误是:

    pandoc: unrecognized option `-e'
Try pandoc --help for more information.
"error"

1 个答案:

答案 0 :(得分:5)

不是try尽力做一整套命令,而是让每个try最好的命令块。将try (mapM_ foo bar)更改为mapM_ (try . foo) bar