Spec-Zone.ru › Ruby 3.4

модуль Errno

Когда операционная система сталкивается с ошибкой, она обычно сообщает об ошибке как целочисленном коде ошибки:

$ ls nosuch.txt
ls: cannot access 'nosuch.txt': No such file or directory
$ echo $? # Code for last error.
2

Когда интерпретатор Ruby взаимодействует с операционной системой и получает такой код ошибки (например, 2), он сопоставляет код с определённым классом исключений Ruby (например, Errno::ENOENT):

File.open('nosuch.txt')
# => No such file or directory @ rb_sysopen - nosuch.txt (Errno::ENOENT)

Каждый такой класс:

  • является вложенным классом в этом модуле, Errno.

  • является подклассом класса SystemCallError.

  • связан с кодом ошибки.

Таким образом:

Errno::ENOENT.superclass # => SystemCallError
Errno::ENOENT::Errno     # => 2

Имена вложенных классов возвращаются методом Errno.constants:

Errno.constants.size         # => 158
Errno.constants.sort.take(5) # => [:E2BIG, :EACCES, :EADDRINUSE, :EADDRNOTAVAIL, :EADV]

Как видно выше, код ошибки, связанный с каждым классом, доступен как значение константы; значение для конкретного класса может отличаться в разных операционных системах. Если класс не нужен для конкретной операционной системы, значение равно нулю:

Errno::ENOENT::Errno      # => 2
Errno::ENOTCAPABLE::Errno # => 0

Константы

E2BIG

Ошибка «Список аргументов слишком длинный»

EACCES

Ошибка «Доступ запрещён»

EADDRINUSE

Ошибка «Адрес уже используется»

EADDRNOTAVAIL

Ошибка «Адрес недоступен»

EADV

Ошибка «Ошибка объявления»

EAFNOSUPPORT

Ошибка «Семейство адресов не поддерживается»

EAGAIN

Ошибка «Ресурс временно недоступен, повторите попытку (возможно, значение такое же, как EWOULDBLOCK)»

EALREADY

Ошибка «Подключение уже происходит»

EAUTH

Ошибка «Ошибка аутентификации»

EBADARCH

Ошибка «Неправильный тип процессора в исполняемом файле»

EBADE

Ошибка «Неправильный обмен»

EBADEXEC

Ошибка «Неправильный исполняемый файл»

EBADF

Ошибка «Неверный дескриптор файла»

EBADFD

Ошибка «Дескриптор файла в плохом состоянии»

EBADMACHO

Ошибка «Неправильный файл Macho»

EBADMSG

Ошибка «Неправильное сообщение»

EBADR

Ошибка «Неправительный дескриптор запроса»

EBADRPC

Ошибка «Структура RPC неверна»

EBADRQC

Ошибка «Неправильный код запроса»

EBADSLT

Ошибка «Неправильный слот»

EBFONT

Ошибка «Неправильный формат файла шрифта»

EBUSY

Ошибка «Устройство или ресурс занят»

ECANCELED

Ошибка «Операция отменена»

ECAPMODE

Ошибка «Не разрешено в режиме возможностей»

ECHILD

Ошибка «Нет дочерних процессов»

ECHRNG

Ошибка «Номер канала выходит за пределы допустимого диапазона»

ECOMM

Ошибка «Ошибка связи при отправке»

ECONNABORTED

Ошибка «Подключение прервано»

ECONNREFUSED

Ошибка «Подключение отклонено»

ECONNRESET

Ошибка «Подключение сброшено»

EDEADLK

Ошибка «Заблокировано; избежано тупиковое состояние»

EDEADLOCK

Ошибка «Ошибка тупика блокировки файла»

EDESTADDRREQ

Ошибка «Требуется адрес назначения»

EDEVERR

Ошибка «Ошибка устройства; например, закончилась бумага в принтере»

EDOM

Ошибка «Математическое значение аргумента выходит за пределы области определения функции»

EDOOFUS

Ошибка «Неправильное использование функции»

EDOTDOT

Ошибка «Ошибка, специфичная для RFS»

EDQUOT

Ошибка «Превышен квота на диск»

EEXIST

Ошибка «Файл существует»

EFAULT

Ошибка «Неправильный адрес»

EFBIG

Ошибка «Файл слишком большой»

EFTYPE

Ошибка «Неверный тип или формат файла»

EHOSTDOWN

Ошибка «Хост отключён»

EHOSTUNREACH

Ошибка «Хост недоступен»

EHWPOISON

Ошибка «Страница памяти содержит аппаратную ошибку»

EIDRM

Ошибка «Идентификатор удалён»

EILSEQ

Ошибка «Неверный или неполный многобайтовый или широкий символ»

EINPROGRESS

Ошибка «Операция в процессе выполнения»

EINTR

Ошибка «Вызов функции прерван»

EINVAL

Ошибка «Неверный аргумент»

EIO

Ошибка «Ошибка ввода/вывода»

EIPSEC

Ошибка «Сбой обработки IPsec»

EISCONN

Ошибка «Сокет подключён»

EISDIR

Ошибка «Это каталог»

EISNAM

Ошибка «Это именованный тип файла»

EKEYEXPIRED

Ошибка «Ключ истек»

EKEYREJECTED

Ошибка «Ключ был отклонен службой»

EKEYREVOKED

Ошибка «Ключ отозван»

EL2HLT

Ошибка «Уровень 2 приостановлен»

EL2NSYNC

Ошибка «Уровень 2 не синхронизирован»

EL3HLT

Ошибка «Уровень 3 приостановлен»

EL3RST

Ошибка «Сброс уровня 3»

ELAST

Ошибка «Наибольшее значение errno»

ELIBACC

Ошибка «Невозможно получить доступ к необходимой динамической библиотеке»

ELIBBAD

Ошибка «Обращение к повреждённой динамической библиотеке»

ELIBEXEC

Ошибка «Невозможно выполнить динамическую библиотеку напрямую»

ELIBMAX

Ошибка «Попытка связать слишком много динамических библиотек»

ELIBSCN

Ошибка «Раздел .lib в a.out повреждён»

ELNRNG

Ошибка «Номер ссылки выходит за пределы допустимого диапазона»

ELOOP

Ошибка «Слишком много уровней символических ссылок»

EMEDIUMTYPE

Ошибка «Неверный тип носителя»

EMFILE

Ошибка «Слишком много открытых файлов»

EMLINK

Ошибка «Слишком много ссылок»

EMSGSIZE

Ошибка «Сообщение слишком длинное»

EMULTIHOP

Ошибка «Попытка многократного перехода»

ENAMETOOLONG

Ошибка «Имя файла слишком длинное»

ENAVAIL

Ошибка «Нет доступных семафоров XENIX»

ENEEDAUTH

Ошибка «Требуется аутентификатор»

ENETDOWN

Ошибка «Сеть отключена»

ENETRESET

Ошибка «Сеть прервала соединение»

ENETUNREACH

Ошибка «Сеть недоступна»

ENFILE

Ошибка «В системе слишком много открытых файлов»

ENOANO

Ошибка «Нет узла»

ENOATTR

Ошибка «Атрибут не найден»

ENOBUFS

Ошибка «Нет буферного пространства»

ENOCSI

Ошибка «Нет доступной структуры CSI»

ENODATA

Ошибка «Нет доступных данных»

ENODEV

Ошибка «Устройства не существует»

ENOENT

Ошибка «Файл или каталог не найден»

ENOEXEC

Ошибка «Ошибка формата исполняемого файла»

ENOKEY

Ошибка «Необходимый ключ недоступен»

ENOLCK

Ошибка «Нет доступных блокировок»

ENOLINK

Ошибка «Связь прервана»

ENOMEDIUM

Ошибка «Не найден носитель»

ENOMEM

Ошибка «Недостаточно памяти»

ENOMSG

Ошибка «Нет сообщения нужного типа»

ENONET

Ошибка «Машина не подключена к сети»

ENOPKG

Ошибка «Пакет не установлен»

ENOPOLICY

Ошибка «Политика не найдена»

ENOPROTOOPT

Ошибка «Протокол недоступен»

ENOSPC

Ошибка «На устройстве закончилось место»

ENOSR

Ошибка «Нет ресурсов STREAM»

ENOSTR

Ошибка «Это не STREAM»

ENOSYS

Ошибка «Функциональность не реализована»

ENOTBLK

Ошибка «Требуется блочное устройство»

ENOTCAPABLE

Ошибка «Недостаточно возможностей»

ENOTCONN

Ошибка «Сокет не подключён»

ENOTDIR

Ошибка «Это не каталог»

ENOTEMPTY

Ошибка «Каталог не пуст»

ENOTNAM

Ошибка «Это не именованный файл типа XENIX»

ENOTRECOVERABLE

Ошибка «Состояние невосстанавливаемо»

ENOTSOCK

Ошибка «Это не сокет»

ENOTSUP

Ошибка «Операция не поддерживается»

ENOTTY

Ошибка «Неподходящая операция управления вводом/выводом»

ENOTUNIQ

Ошибка «Имя не уникально в сети»

ENXIO

Ошибка «Нет такого устройства или адреса»

EOPNOTSUPP

Ошибка «Операция не поддерживается для сокета»

EOVERFLOW

Ошибка «Значение слишком велико для хранения в типе данных»

EOWNERDEAD

Ошибка «Владелец умер»

EPERM

Ошибка «Операция запрещена»

EPFNOSUPPORT

Ошибка «Семейство протоколов не поддерживается»

EPIPE

Ошибка «Разрыв канала»

EPROCLIM

Ошибка «Слишком много процессов»

EPROCUNAVAIL

Ошибка «Неправильная процедура для программы»

EPROGMISMATCH

Ошибка «Неправильная версия программы»

EPROGUNAVAIL

Ошибка «Программа RPC недоступна»

EPROTO

Ошибка «Ошибка протокола»

EPROTONOSUPPORT

Ошибка «Протокол не поддерживается»

EPROTOTYPE

Ошибка «Неверный тип протокола для сокета»

EPWROFF

Ошибка «Питание устройства выключено»

EQFULL

Ошибка «Очередь вывода интерфейса заполнена»

ERANGE

Ошибка «Результат слишком большой»

EREMCHG

Ошибка «Удаленный адрес изменён»

EREMOTE

Ошибка «Объект удалён»

EREMOTEIO

Ошибка «Ошибка удалённого ввода/вывода»

ERESTART

Ошибка «Прерванный системный вызов должен быть запущен заново»

ERFKILL

Ошибка «Операция невозможна из-за RF-kill»

EROFS

Ошибка «Файловая система только для чтения»

ERPCMISMATCH

Ошибка «Неверная версия RPC»

ESHLIBVERS

Ошибка «Несовпадение версии динамической библиотеки»

ESHUTDOWN

Ошибка «Отправка невозможна после завершения работы транспортного узла»

ESOCKTNOSUPPORT

Ошибка «Тип сокета не поддерживается»

ESPIPE

Ошибка «Неправильный поиск»

ESRCH
END_OF_DOCUMENT_MARKER

Ошибка «Процесс не найден»

ESRMNT

Ошибка «Ошибка монтирования сервера»

ESTALE

Ошибка «Дескриптор файла устарел»

ESTRPIPE

Ошибка «Ошибка канала потоков»

ETIME

Ошибка «Таймер истек»

ETIMEDOUT

Ошибка «Тайм-аут соединения»

ETOOMANYREFS

Ошибка «слишком много ссылок»

ETXTBSY

Ошибка «Текстовый файл занят»

EUCLEAN

Ошибка «Необходима очистка структуры»

EUNATCH

Ошибка «Драйвер протокола не подключен»

EUSERS

Ошибка «Слишком много пользователей»

EWOULDBLOCK

Ошибка «Операция заблокирована»

EXDEV

Ошибка «Неверная междисковая ссылка»

EXFULL

Ошибка «Обменник полон»

NOERROR

Нет ошибки

Ruby Core © 1993–2024 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

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