Spec-Zone.ru › Haskell 8

System.IO.Error

Copyright (c) The University of Glasgow 2001
License BSD-style (see the file libraries/base/LICENSE)
Maintainer libraries@haskell.org
Stability provisional
Portability portable
Safe Haskell Trustworthy
Language 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.

Since: 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 -> Строка -> IOError Исходный код

ioeSetLocation :: IOError -> Строка -> IOError Исходный код

ioeSetHandle :: IOError -> Дескриптор -> IOError Исходный код

ioeSetFileName :: IOError -> ПутьКФайлу -> IOError Исходный код

Типы ошибок ввода-вывода

data ТипОшибкиВводаВывода Исходный код

Абстрактный тип, содержащий значение для каждой разновидности IOError.

Примеры
Подробности примеров
Равенство ТипОшибкиВводаВывода

С версии: base-4.1.0.0

Подробности примера

Определено в GHC.IO.Exception

Методы

(==) :: ТипОшибкиВводаВывода -> ТипОшибкиВводаВывода -> Булево Исходный код

(/=) :: ТипОшибкиВводаВывода -> ТипОшибкиВводаВывода -> Булево Исходный код

Вывод ТипОшибкиВводаВывода

С версии: base-4.1.0.0

Подробности примера

Определено в GHC.IO.Exception

Методы

showsPrec :: Целое -> ТипОшибкиВводаВывода -> ВыводS Исходный код

show :: ТипОшибкиВводаВывода -> Строка Исходный код

showList :: [ТипОшибкиВводаВывода] -> ВыводS Исходный код

ошибкаСуществования :: ТипОшибкиВводаВывода Исходный код

Ошибка ввода-вывода, когда операция завершилась неудачно, потому что один из её аргументов уже существует.

ошибкаОтсутствия :: ТипОшибкиВводаВывода Исходный код

Ошибка ввода-вывода, когда операция завершилась неудачно, потому что один из её аргументов не существует.

ошибкаИспользования :: ТипОшибкиВводаВывода Исходный код

Ошибка ввода-вывода, когда операция завершилась неудачно, потому что один из её аргументов является ресурсом, который используется.

ошибкаПереполнения :: ТипОшибкиВводаВывода Исходный код

Ошибка ввода-вывода, когда операция завершилась неудачно, потому что устройство заполнено.

ошибкаКонцаФайла :: ТипОшибкиВводаВывода Исходный код

Ошибка ввода-вывода, когда операция завершилась неудачно, потому что достигнут конец файла.

ошибкаНезаконнойОперации :: ТипОшибкиВводаВывода Исходный код

Ошибка ввода-вывода, когда операция невозможна.

ошибкаДоступа :: ТипОшибкиВводаВывода Исходный код

Ошибка ввода-вывода, когда операция завершилась неудачно, потому что у пользователя нет необходимых прав для выполнения этой операции.

ошибкаПользователя :: ТипОшибкиВводаВывода Исходный код

Ошибка ввода-вывода, определенная программистом.

ошибкаИсчезновенияРесурса :: ТипОшибкиВводаВывода Исходный код

Ошибка ввода-вывода, когда операция завершилась неудачно, потому что ресурс исчез. Например, при попытке записи в закрытый сокет или в удалённую именованную трубу.

С версии: base-4.14.0.0

IOErrorType предикаты

являетсяОшибкойСуществования :: ТипОшибкиВводаВывода -> Булево Исходный код

Ошибка ввода-вывода, когда операция завершилась неудачно, потому что один из её аргументов уже существует.

являетсяОшибкойОтсутствия :: ТипОшибкиВводаВывода -> Булево Исходный код

Ошибка ввода-вывода, когда операция завершилась неудачно, потому что один из её аргументов не существует.

являетсяОшибкойИспользования :: ТипОшибкиВводаВывода -> Булево Исходный код

Ошибка ввода-вывода, когда операция завершилась неудачно, потому что один из её аргументов является ресурсом, который используется.

являетсяОшибкойПереполнения :: ТипОшибкиВводаВывода -> Булево Исходный код

Ошибка ввода-вывода, когда операция завершилась неудачно, потому что устройство заполнено.

являетсяОшибкойКонцаФайла :: ТипОшибкиВводаВывода -> Булево Исходный код

Ошибка ввода-вывода, когда операция завершилась неудачно, потому что достигнут конец файла.

isIllegalOperationErrorType :: IOErrorType -> Bool Source

Ошибка ввода-вывода, когда операция невозможна.

isPermissionErrorType :: IOErrorType -> Bool Source

Ошибка ввода-вывода, когда операция не удалась из-за недостаточных прав пользователя для выполнения этой операции.

isUserErrorType :: IOErrorType -> Bool Source

Ошибка ввода-вывода, определенная программистом.

isResourceVanishedErrorType :: IOErrorType -> Bool Source

Ошибка ввода-вывода, когда операция не удалась из-за исчезновения ресурса. См. resourceVanishedErrorType.

С момента: base-4.14.0.0

Выбрасывание и перехват ошибок ввода-вывода

ioError :: 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/8.10.2/docs/html/libraries/base-4.14.1.0/System-IO-Error.html

Spec-Zone.ru

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