System.IO.Error
| Авторские права | (c) The University of Glasgow 2001 |
|---|---|
| Лицензия | В стиле BSD (см. файл libraries/base/LICENSE) |
| Сопровождающий | libraries@haskell.org |
| Стабильность | предварительная |
| Переносимость | переносимая |
| Безопасный Haskell | Safe |
| Язык | Haskell2010 |
Описание
Стандартные ошибки ввода-вывода.
Ошибки ввода-вывода
type IOError = IOException Source
Тип Haskell 2010 для исключений в монаде IO. Любая операция ввода-вывода может вызвать IOError вместо возврата результата. Более общий тип исключений, включающий также возникающие в чистом коде, см. в Exception.
В Haskell 2010 это непрозрачный тип.
userError :: String -> IOError Source
Создает значение IOError со строкой, описывающей ошибку. Метод fail экземпляра IO класса Monad вызывает userError, например:
instance Monad IO where ... fail s = ioError (userError s)
mkIOError :: IOErrorType -> String -> Maybe Handle -> Maybe FilePath -> IOError Source
Создает IOError указанного типа, где второй аргумент описывает место возникновения ошибки, а третий и четвертый аргументы содержат дескриптор файла и путь к файлу, связанному с ошибкой, если применимо.
annotateIOError :: IOError -> String -> Maybe Handle -> Maybe FilePath -> IOError Source
Добавляет описание места возникновения, а также, возможно, путь к файлу и дескриптор файла к IOError. Если дескриптор файла или путь к файлу не указаны, соответствующее значение в IOError остается без изменений.
Классификация ошибок ввода-вывода
isAlreadyExistsError :: IOError -> Bool Source
Ошибка, указывающая, что операция IO завершилась неудачно, поскольку один из ее аргументов уже существует.
isDoesNotExistError :: IOError -> Bool Source
Ошибка, указывающая, что операция IO завершилась неудачно, поскольку один из ее аргументов не существует.
isAlreadyInUseError :: IOError -> Bool Source
Ошибка, указывающая, что операция IO завершилась неудачно, поскольку один из ее аргументов является ресурсом однократного использования, который уже используется (например, повторное открытие одного файла для записи может вызвать эту ошибку).
isFullError :: IOError -> Bool Source
Ошибка, указывающая, что операция IO завершилась неудачно, поскольку устройство заполнено.
isEOFError :: IOError -> Bool Source
Ошибка, указывающая, что операция IO завершилась неудачно, поскольку достигнут конец файла.
isIllegalOperation :: IOError -> Bool Source
Ошибка, указывающая, что операция IO завершилась неудачно, поскольку выполнить ее было невозможно. Любое вычисление, возвращающее результат IO, может завершиться ошибкой isIllegalOperation. В некоторых случаях реализация не сможет определить причину ошибки. В таком случае она должна завершиться ошибкой isIllegalOperation.
isPermissionError :: IOError -> Bool Source
Ошибка, указывающая, что операция IO завершилась неудачно, поскольку у пользователя недостаточно прав операционной системы для ее выполнения.
isUserError :: IOError -> Bool Source
Значение ошибки, определенное программистом с помощью userError.
isResourceVanishedError :: IOError -> Bool Source
Ошибка, указывающая, что операция завершилась неудачно, поскольку ресурс исчез. См. resourceVanishedErrorType.
Начиная с: base-4.14.0.0
Атрибуты ошибок ввода-вывода
ioeGetErrorType :: IOError -> IOErrorType Source
ioeGetLocation :: IOError -> String Source
ioeGetErrorString :: IOError -> String Source
ioeGetHandle :: IOError -> Maybe Handle Source
ioeGetFileName :: IOError -> Maybe FilePath Source
ioeSetErrorType :: IOError -> IOErrorType -> IOError Source
ioeSetErrorString :: IOError -> String -> IOError Source
ioeSetLocation :: IOError -> String -> IOError Source
ioeSetHandle :: IOError -> Handle -> IOError Source
ioeSetFileName :: IOError -> FilePath -> IOError Source
Типы ошибок ввода-вывода
data IOErrorType Source
Абстрактный тип, содержащий значение для каждого варианта IOError.
Экземпляры
| Eq IOErrorType Source | Начиная с: base-4.1.0.0 |
Определено в GHC.Internal.IO.Exception Методы(==) :: IOErrorType -> IOErrorType -> Bool Source (/=) :: IOErrorType -> IOErrorType -> Bool Source | |
| Show IOErrorType Source | Начиная с: base-4.1.0.0 |
Определено в GHC.Internal.IO.Exception МетодыshowsPrec :: Int -> IOErrorType -> ShowS Source show :: IOErrorType -> String Source showList :: [IOErrorType] -> ShowS Source | |
alreadyExistsErrorType :: IOErrorType Source
Ошибка ввода-вывода, при которой операция завершилась неудачно, поскольку один из ее аргументов уже существует.
doesNotExistErrorType :: IOErrorType Source
Ошибка ввода-вывода, при которой операция завершилась неудачно, поскольку один из ее аргументов не существует.
alreadyInUseErrorType :: IOErrorType Source
Ошибка ввода-вывода, при которой операция завершилась неудачно, поскольку один из ее аргументов является ресурсом однократного использования, который уже занят.
fullErrorType :: IOErrorType Source
Ошибка ввода-вывода, при которой операция завершилась неудачно, поскольку устройство заполнено.
eofErrorType :: IOErrorType Source
Ошибка ввода-вывода, при которой операция завершилась неудачно, поскольку достигнут конец файла.
illegalOperationErrorType :: IOErrorType Source
Ошибка ввода-вывода, при которой операция невозможна.
permissionErrorType :: IOErrorType Source
Ошибка ввода-вывода, при которой операция завершилась неудачно, поскольку у пользователя недостаточно прав операционной системы для ее выполнения.
userErrorType :: IOErrorType Source
Ошибка ввода-вывода, определенная программистом.
resourceVanishedErrorType :: IOErrorType Source
Ошибка ввода-вывода, при которой операция завершилась неудачно, поскольку ресурс исчез. Это происходит, например, при попытке записать данные в закрытый сокет или в именованный канал, который был удален.
Начиная с: base-4.14.0.0
IOErrorType предикаты
isAlreadyExistsErrorType :: IOErrorType -> Bool Source
Ошибка ввода-вывода, при которой операция завершилась неудачно, поскольку один из ее аргументов уже существует.
isDoesNotExistErrorType :: IOErrorType -> Bool Source
Ошибка ввода-вывода, при которой операция завершилась неудачно, поскольку один из ее аргументов не существует.
isAlreadyInUseErrorType :: IOErrorType -> Bool Source
Ошибка ввода-вывода, при которой операция завершилась неудачно, поскольку один из ее аргументов является ресурсом однократного использования, который уже занят.
isFullErrorType :: IOErrorType -> Bool Source
Ошибка ввода-вывода, при которой операция завершилась неудачно, поскольку устройство заполнено.
isEOFErrorType :: IOErrorType -> Bool Source
Ошибка ввода-вывода, при которой операция завершилась неудачно, поскольку достигнут конец файла.
isIllegalOperationErrorType :: IOErrorType -> Bool Source
Ошибка ввода-вывода, при которой операция невозможна.
isPermissionErrorType :: IOErrorType -> Bool Source
Ошибка ввода-вывода, при которой операция завершилась неудачно, поскольку у пользователя недостаточно прав операционной системы для ее выполнения.
isUserErrorType :: IOErrorType -> Bool Source
Ошибка ввода-вывода, определенная программистом.
isResourceVanishedErrorType :: IOErrorType -> Bool Source
Ошибка ввода-вывода, при которой операция завершилась неудачно, поскольку ресурс исчез. См. resourceVanishedErrorType.
Начиная с: base-4.14.0.0
Возбуждение и перехват ошибок ввода-вывода
ioError :: HasCallStack => IOError -> IO a Source
catchIOError :: IO a -> (IOError -> IO a) -> IO a Source
Функция catchIOError устанавливает обработчик, который получает любое IOError, вызванное в действии, защищенном catchIOError. IOError перехватывается последним установленным обработчиком одной из функций обработки исключений. Эти обработчики не являются избирательными: перехватываются все IOError. Для распространения исключения обработчик должен явно повторно вызвать нежелательные исключения. Например, в
f = catchIOError g (\e -> if IO.isEOFError e then return [] else ioError e)
функция f возвращает [], если в g возникает исключение конца файла (ср. isEOFError); в противном случае исключение передается следующему внешнему обработчику.
Если исключение выходит за пределы главной программы, система Haskell выводит связанное с ним значение IOError и завершает программу.
Этот вариант не перехватывает исключения, не связанные с вводом-выводом; чтобы перехватывать все исключения, используйте catch из Control.Exception.
Начиная с: base-4.4.0.0
tryIOError :: IO a -> IO (Either IOError a) Source
Конструкция tryIOError comp предоставляет доступ к ошибкам ввода-вывода, возникающим во время вычисления и не обработанным полностью.
Этот вариант не перехватывает исключения, не связанные с вводом-выводом; чтобы перехватывать все исключения, используйте try из Control.Exception.
Начиная с: base-4.4.0.0
modifyIOError :: (IOError -> IOError) -> IO a -> IO a Source
Перехватывает любое IOError, возникающее при вычислении, и вызывает измененную версию.
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/9.14.1/docs/libraries/base-4.22.0.0-66f8/System-IO-Error.html