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

3
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"

可能是如何在Haskell中处理简单的IO异常的重复问题。 - jberryman
1个回答

5

不要试图尝试执行一整个命令块,而是将每个命令块都尽力而为。将try (mapM_ foo bar)改为mapM_ (try . foo) bar


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接