Если файл не существует или возникает какая-либо другая ошибка, вызов openFile
завершится неудачей с исключением.
Например:
import System.IO
main = do
openFile "/some/path" ReadMode
Сбой с:
A.hs: /some/path: openFile: does not exist (No such file or directory)
Здесь перечислены типы исключений, которые могут быть вызваны openFile
, и включают:
- isAlreadyInUseError, если файл уже открыти не может быть повторно открыт;
- isDoesNotExistError, если файл не существует;или
- isPermissionError, если у пользователя нет прав на открытие файла.
Вы можете перехватить эти ошибки, используя 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)