Si el archivo no existe o se produce algún otro error, la llamada a openFile
fallará con una excepción.
Por ejemplo:
import System.IO
main = do
openFile "/some/path" ReadMode
error con:
A.hs: /some/path: openFile: does not exist (No such file or directory)
Los tipos de excepciones que pueden ser lanzados por openFile
are listed here, e incluyen:
- isAlreadyInUseError si el archivo ya está abierto y no puede ser reabierto;
- isDoesNotExistError si el archivo no existe; o
- isPermissionError si el usuario no tiene permiso para abrir el archivo.
Usted puede coger estos errores utilizando Control.Exception, así:
{-# 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)
Por cierto, no utilizan el módulo 'IO' más, que está en desuso. Use 'System.IO' en su lugar. – fuz