module Errno
When an operating system encounters an error, it typically reports the error as an integer error code:
$ ls nosuch.txt ls: cannot access 'nosuch.txt': No such file or directory $ echo $? # Code for last error. 2
When the Ruby interpreter interacts with the operating system and receives such an error code (e.g., 2
), it maps the code to a particular Ruby exception class (e.g., Errno::ENOENT
):
File.open('nosuch.txt') # => No such file or directory @ rb_sysopen - nosuch.txt (Errno::ENOENT)
Each such class is:
-
A nested class in this module,
Errno
. -
A subclass of class
SystemCallError
. -
Associated with an error code.
Thus:
Errno::ENOENT.superclass # => SystemCallError Errno::ENOENT::Errno # => 2
The names of nested classes are returned by method Errno.constants
:
Errno.constants.size # => 158 Errno.constants.sort.take(5) # => [:E2BIG, :EACCES, :EADDRINUSE, :EADDRNOTAVAIL, :EADV]
As seen above, the error code associated with each class is available as the value of a constant; the value for a particular class may vary among operating systems. If the class is not needed for the particular operating system, the value is zero:
Errno::ENOENT::Errno # => 2 Errno::ENOTCAPABLE::Errno # => 0
Constants
- E2BIG
-
“Argument list too long” error
- EACCES
-
“Permission denied” error
- EADDRINUSE
-
“Address already in use” error
- EADDRNOTAVAIL
-
“Address not available” error
- EADV
-
“Advertise error” error
- EAFNOSUPPORT
-
“Address family not supported” error
- EAGAIN
-
“Resource temporarily unavailable, try again (may be the same value as
EWOULDBLOCK
)” error - EALREADY
-
“Connection already in progress” error
- EAUTH
-
“Authentication error” error
- EBADARCH
-
“Bad CPU type in executable” error
- EBADE
-
“Bad exchange” error
- EBADEXEC
-
“Bad executable” error
- EBADF
-
“Bad file descriptor” error
- EBADFD
-
“File descriptor in bad state” error
- EBADMACHO
-
“Malformed Macho file” error
- EBADMSG
-
“Bad message” error
- EBADR
-
“Invalid request descriptor” error
- EBADRPC
-
“RPC struct is bad” error
- EBADRQC
-
“Invalid request code” error
- EBADSLT
-
“Invalid slot” error
- EBFONT
-
“Bad font file format” error
- EBUSY
-
“Device or resource busy” error
- ECANCELED
-
“Operation canceled” error
- ECAPMODE
-
“Not permitted in capability mode” error
- ECHILD
-
“No child processes” error
- ECHRNG
-
“Channel number out of range” error
- ECOMM
-
“Communication error on send” error
- ECONNABORTED
-
“Connection aborted” error
- ECONNREFUSED
-
“Connection refused” error
- ECONNRESET
-
“Connection reset” error
- EDEADLK
-
“Resource deadlock avoided” error
- EDEADLOCK
-
“File locking deadlock error” error
- EDESTADDRREQ
-
“Destination address required” error
- EDEVERR
-
“Device error; e.g., printer paper out” error
- EDOM
-
“Mathematics argument out of domain of function” error
- EDOOFUS
-
“Improper function use” error
- EDOTDOT
-
“RFS specific error” error
- EDQUOT
-
“Disk quota exceeded” error
- EEXIST
-
“File exists” error
- EFAULT
-
“Bad address” error
- EFBIG
-
“File too large” error
- EFTYPE
-
“Invalid file type or format” error
- EHOSTDOWN
-
“Host is down” error
- EHOSTUNREACH
-
“Host is unreachable” error
- EHWPOISON
-
“Memory page has hardware error” error
- EIDRM
-
“Identifier removed” error
- EILSEQ
-
“Invalid or incomplete multibyte or wide character” error
- EINPROGRESS
-
“Operation in progress” error
- EINTR
-
“Interrupted function call” error
- EINVAL
-
“Invalid argument” error
- EIO
-
“Input/output error” error
- EIPSEC
-
“IPsec processing failure” error
- EISCONN
-
“Socket is connected” error
- EISDIR
-
“Is a directory” error
- EISNAM
-
“Is a named file type” error
- EKEYEXPIRED
-
“Key has expired” error
- EKEYREJECTED
-
“Key was rejected by service” error
- EKEYREVOKED
-
“Key has been revoked” error
- EL2HLT
-
“Level 2 halted” error
- EL2NSYNC
-
“Level 2 not synchronized” error
- EL3HLT
-
“Level 3 halted” error
- EL3RST
-
“Level 3 reset” error
- ELAST
-
“Largest errno value” error
- ELIBACC
-
“Cannot access a needed shared library” error
- ELIBBAD
-
“Accessing a corrupted shared library” error
- ELIBEXEC
-
“Cannot exec a shared library directly” error
- ELIBMAX
-
“Attempting to link in too many shared libraries” error
- ELIBSCN
-
“.lib section in a.out corrupted” error
- ELNRNG
-
“Link number out of range” error
- ELOOP
-
“Too many levels of symbolic links” error
- EMEDIUMTYPE
-
“Wrong medium type” error
- EMFILE
-
“Too many open files” error
- EMLINK
-
“Too many links” error
- EMSGSIZE
-
“Message too long” error
- EMULTIHOP
-
“Multihop attempted” error
- ENAMETOOLONG
-
“Filename too long” error
- ENAVAIL
-
“No XENIX semaphores available” error
- ENEEDAUTH
-
“Need authenticator” error
- ENETDOWN
-
“Network is down” error
- ENETRESET
-
“Connection aborted by network” error
- ENETUNREACH
-
“Network unreachable” error
- ENFILE
-
“Too many open files in system” error
- ENOANO
-
“No anode” error
- ENOATTR
-
“Attribute not found” error
- ENOBUFS
-
“No buffer space available” error
- ENOCSI
-
“No CSI structure available” error
- ENODATA
-
“No data available” error
- ENODEV
-
“No such device” error
- ENOENT
-
“No such file or directory” error
- ENOEXEC
-
“Exec format error” error
- ENOKEY
-
“Required key not available” error
- ENOLCK
-
“No locks available” error
- ENOLINK
-
“Link has been severed” error
- ENOMEDIUM
-
“No medium found” error
- ENOMEM
-
“Not enough space/cannot allocate memory” error
- ENOMSG
-
“No message of the desired type” error
- ENONET
-
“Machine is not on the network” error
- ENOPKG
-
“Package not installed” error
- ENOPOLICY
-
“No such policy” error
- ENOPROTOOPT
-
“Protocol not available” error
- ENOSPC
-
“No space left on device” error
- ENOSR
-
“No STREAM resources” error
- ENOSTR
-
“Not a STREAM” error
- ENOSYS
-
“Functionality not implemented” error
- ENOTBLK
-
“Block device required” error
- ENOTCAPABLE
-
“Capabilities insufficient” error
- ENOTCONN
-
“The socket is not connected” error
- ENOTDIR
-
“Not a directory” error
- ENOTEMPTY
-
“Directory not empty” error
- ENOTNAM
-
“Not a XENIX named type file” error
- ENOTRECOVERABLE
-
“State not recoverable” error
- ENOTSOCK
-
“Not a socket” error
- ENOTSUP
-
“Operation not supported” error
- ENOTTY
-
“Inappropriate I/O control operation” error
- ENOTUNIQ
-
“Name not unique on network” error
- ENXIO
-
“No such device or address” error
- EOPNOTSUPP
-
“Operation not supported on socket” error
- EOVERFLOW
-
“Value too large to be stored in data type” error
- EOWNERDEAD
-
“Owner died” error
- EPERM
-
“Operation not permitted” error
- EPFNOSUPPORT
-
“Protocol family not supported” error
- EPIPE
-
“Broken pipe” error
- EPROCLIM
-
“Too many processes” error
- EPROCUNAVAIL
-
“Bad procedure for program” error
- EPROGMISMATCH
-
“Program version wrong” error
- EPROGUNAVAIL
-
“RPC program isn’t available” error
- EPROTO
-
“Protocol error” error
- EPROTONOSUPPORT
-
“Protocol not supported” error
- EPROTOTYPE
-
“Protocol wrong type for socket” error
- EPWROFF
-
“Device power is off” error
- EQFULL
-
“Interface output queue is full” error
- ERANGE
-
“Result too large” error
- EREMCHG
-
“Remote address changed” error
- EREMOTE
-
“Object is remote” error
- EREMOTEIO
-
“Remote I/O error” error
- ERESTART
-
“Interrupted system call should be restarted” error
- ERFKILL
-
“Operation not possible due to RF-kill” error
- EROFS
-
“Read-only file system” error
- ERPCMISMATCH
-
“RPC version wrong” error
- ESHLIBVERS
-
“Shared library version mismatch” error
- ESHUTDOWN
-
“Cannot send after transport endpoint shutdown” error
- ESOCKTNOSUPPORT
-
“Socket type not supported” error
- ESPIPE
-
“Illegal seek” error
- ESRCH
-
“No such process” error
- ESRMNT
-
“Server mount error” error
- ESTALE
-
“Stale file handle” error
- ESTRPIPE
-
“Streams pipe error” error
- ETIME
-
“Timer expired” error
- ETIMEDOUT
-
“Connection timed out” error
- ETOOMANYREFS
-
cannot splice“ error
- ETXTBSY
-
“Text file busy” error
- EUCLEAN
-
“Structure needs cleaning” error
- EUNATCH
-
“Protocol driver not attached” error
- EUSERS
-
“Too many users” error
- EWOULDBLOCK
-
“Operation would block” error
- EXDEV
-
“Invalid cross-device link” error
- EXFULL
-
“Exchange full” error
- NOERROR
-
No error