3
試圖處理一個例外,我發現了一個相關的問題談論這個:如何處理Frege中的異常?
what is the Frege equivalent to Haskell's "interact" function?
但它不是我清楚如何使用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
中的更多示例會有很大幫助。
感謝
準確地說,將lambda表達式更改爲_.getLines使其工作:-) –