好的,伙计们,这是一个非常简单的问题(谷歌没有帮我解决这个问题似乎很奇怪):
import IO
--.... yadda, yadda, yadda
file <- openFile "/some/path" ReadMode
如何检查从openFile
获取的句柄是否是有效句柄,即该文件是否存在且是否已成功打开?
答案 0 :(得分:8)
如果该文件不存在或发生其他错误,则对openFile
的调用将失败并出现异常。
例如:
import System.IO
main = do
openFile "/some/path" ReadMode
失败:
A.hs: /some/path: openFile: does not exist (No such file or directory)
openFile
are listed here,可能抛出的异常类型,包括:
您可以使用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)