У меня есть обычный код haskell, который читает файл и обрабатывает любое исключение:
handle ((\_->return "ERROR") :: SomeException -> IO String) $ readFile "file.txt"
Когда я пытаюсь прочитать неверно закодированный файл, я всегда получаю сообщение об ошибке:
*** Exception: file.txt: hGetContents: invalid argument (invalid byte sequence)
и программане собирается входить в мою функцию дескриптора исключения.Я также попытался использовать типы IOError
и IOException
вместо SomeException
, но это ничего не меняет.
Если я открою аналогичный файл с помощью дескриптора и прочту его с кодом:
handle ((\_->return "ERROR") :: SomeException -> IO String) (hGetContents myHandle)
отлично работает.
Как отловить исключения, выданные hGetContents
, переданные readFile
в правильном направлении?