6 io monads file-io haskell exception
好的,伙计们,这是一个非常简单的问题(谷歌没有帮我解决这个问题似乎很奇怪):
import IO
--.... yadda, yadda, yadda
file <- openFile "/some/path" ReadMode
Run Code Online (Sandbox Code Playgroud)
如何检查我获得的句柄openFile是否是有效句柄,即文件是否存在并且是否已成功打开?
如果文件不存在或发生其他错误,则调用openFile将失败并出现异常.
例如:
import System.IO
main = do
openFile "/some/path" ReadMode
Run Code Online (Sandbox Code Playgroud)
失败:
A.hs: /some/path: openFile: does not exist (No such file or directory)
Run Code Online (Sandbox Code Playgroud)
您可以使用Control.Exception捕获这些错误,如下所示:
{-# LANGUAGE ScopedTypeVariables #-}
import System.IO
import Control.Exception
main = do
handle (\(e :: IOException) -> print e >> return Nothing) $ do
h <- openFile "/some/path" ReadMode
return (Just h)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1425 次 |
| 最近记录: |