我是 Yesod 和 Haskell 的新手,所以请耐心等待,但我有一个程序可以接受文件,计算单词并在新的 Yesod 网页上显示结果。我需要一种更优雅地捕获异常的方法。例如,如果它在隐藏文件上运行以下函数:
wordCount :: String -> String -> String
wordCount ('.' : _) _ = error "Cannot count hidden files."
wordCount name contents = "<p>There are <b>" ++ show (length $ words contents) ++ "</b> words in your file <i>" ++ name ++ "</i>.</p>"
我想显示该错误消息,然后显示表单以供用户提交新文件。现在它只是转到一个页面,上面写着“页面加载时与服务器的连接已重置”。
我认为 Yesod 有自己的一组 catch 函数,我可能不得不隐藏它来编写自己的函数,但我不确定它们会在哪里,而且我在任何文档中都找不到对它们的任何引用。如果用户输入了错误的文件,我不希望网站崩溃。
任何帮助将非常感激。
编辑:感谢您的建议。我意识到以这种方式抛出错误并不是处理错误的最佳方法,但问题实际上是我正在使用通常从终端而不是 Yesod 站点运行的现有 Haskell 代码。我用wordcount作为一个小例子,但实际上它是几十个文件,几十个函数和分散的错误抛出。希望我可以捕获这些,而不必完全修改现有代码中的每个函数。如果有人对如何在 Yesod 中捕获异常有任何建议,我将不胜感激。