Spec-Zone.ru › Haskell 9

System.IO.Error

Авторские права (c) The University of Glasgow 2001
Лицензия В стиле BSD (см. файл libraries/base/LICENSE)
Сопровождающий libraries@haskell.org
Стабильность предварительная
Переносимость переносимая
Безопасный Haskell Safe
Язык Haskell2010

Содержание

  • Ошибки ввода-вывода
    • Классификация ошибок ввода-вывода
    • Атрибуты ошибок ввода-вывода
  • Типы ошибок ввода-вывода
    • IOErrorType-предикаты
  • Возбуждение и перехват ошибок ввода-вывода

Описание

Стандартные ошибки ввода-вывода.

Ошибки ввода-вывода

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

Вызывает IOError в монаде IO.

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API