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 | Safe |
| Language | 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 -> ТипОшибкиIO -> IOError Исходный код
ioeSetErrorString :: IOError -> Строка -> IOError Исходный код
ioeSetLocation :: IOError -> Строка -> IOError Исходный код
ioeSetHandle :: IOError -> ДескрипторФайла -> IOError Исходный код
ioeSetFileName :: IOError -> ПутьКФайлу -> IOError Исходный код
Типы ошибок ввода-вывода
data ТипОшибкиIO Исходный код
Абстрактный тип, содержащий значение для каждого варианта IOError.
Примеры реализации
| Вывод ТипОшибкиIO Исходный код | С версии: base-4.1.0.0 |
Определено в GHC.Internal.IO.Exception МетодыshowsPrec :: ЦелоеЧисло -> ТипОшибкиIO -> ShowS Исходный код show :: ТипОшибкиIO -> Строка Исходный код showList :: [ТипОшибкиIO] -> ShowS Исходный код | |
| Равенство ТипОшибкиIO Исходный код | С версии: base-4.1.0.0 |
Определено в GHC.Internal.IO.Exception Методы(==) :: ТипОшибкиIO -> ТипОшибкиIO -> Булево Исходный код (/=) :: ТипОшибкиIO -> ТипОшибкиIO -> Булево Исходный код | |
alreadyExistsErrorType :: ТипОшибкиIO Исходный код
Ошибка ввода-вывода, когда операция завершилась неудачно, так как один из её аргументов уже существует.
doesNotExistErrorType :: ТипОшибкиIO Исходный код
Ошибка ввода-вывода, когда операция завершилась неудачно, так как один из её аргументов не существует.
alreadyInUseErrorType :: ТипОшибкиIO Исходный код
Ошибка ввода-вывода, когда операция завершилась неудачно, так как один из её аргументов является ресурсом одноразового использования, который уже используется.
fullErrorType :: ТипОшибкиIO Исходный код
Ошибка ввода-вывода, когда операция завершилась неудачно, потому что устройство заполнено.
eofErrorType :: ТипОшибкиIO Исходный код
Ошибка ввода-вывода, когда операция завершилась неудачно, потому что достигнут конец файла.
illegalOperationErrorType :: ТипОшибкиIO Исходный код
Ошибка ввода-вывода, когда операция невозможна.
permissionErrorType :: ТипОшибкиIO Исходный код
Ошибка ввода-вывода, когда операция завершилась неудачно, потому что у пользователя недостаточно прав операционной системы для выполнения этой операции.
userErrorType :: ТипОшибкиIO Исходный код
Ошибка ввода-вывода, определённая программистом.
resourceVanishedErrorType :: ТипОшибкиIO Исходный код
Ошибка ввода-вывода, когда операция завершилась неудачно, так как ресурс исчез. Это происходит, например, при попытке записи в закрытый сокет или попытке записи в именованную очередь, которая была удалена.
С версии: base-4.14.0.0
IOErrorType предикаты
isAlreadyExistsErrorType :: ТипОшибкиIO -> Булево Исходный код
Ошибка ввода-вывода, когда операция завершилась неудачно, так как один из её аргументов уже существует.
isDoesNotExistErrorType :: ТипОшибкиIO -> Булево Исходный код
Ошибка ввода-вывода, когда операция завершилась неудачно, так как один из её аргументов не существует.
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 возвращает [] , когда возникает исключение конца файла (см. isEOFError) в g; в противном случае, исключение передаётся в следующий внешний обработчик.
Когда исключение распространяется за пределы основной программы, система 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.12.1/docs/libraries/base-4.21.0.0-8e62/System-IO-Error.html