尝试处理异常时,我发现了一个相关的问题:
与 Haskell 的“交互”函数等效的 Frege 是什么?
但我不清楚如何使用这些try/catch/finally
表达式。
问题:
我想读取一个文件并返回它的所有行。如果它不存在,我可能想返回一个空列表。就像是:
getContent :: String -> IO [String]
getContent filePath = openReader filePath >>= \reader -> reader.getLines
`catch` (\(e::FileNotFoundException) -> return [])
`finally` (println "something went wrong")
前面的代码可以编译,但执行时只显示以下内容:
frege> getContent "asdf"
java.io.FileNotFoundException: asdf (No such file or directory)
问题:
- 我应该如何更改我的代码以按预期运行(在引发异常时返回一个空列表)?
- 文档中有与此相关的地方吗?我相信更多的例子
docs/wiki/frege goodness
会有很大帮助。
谢谢