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

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

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

Ошибка «Нет anode»

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

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

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

Ошибка «Такого процесса нет»

ESRMNT

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

ESTALE

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

ESTRPIPE

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

ETIME

Ошибка «Время таймера истекло»

ETIMEDOUT

Ошибка «Время ожидания подключения истекло»

ETOOMANYREFS

Невозможно выполнить splice

ETXTBSY

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

EUCLEAN

Ошибка «Структуру необходимо очистить»

EUNATCH

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

EUSERS

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

EWOULDBLOCK

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

EXDEV

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

EXFULL

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

NOERROR

Нет ошибки

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

Spec-Zone.ru

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