modul Errno
Wenn ein Betriebssystem einen Fehler feststellt, meldet es diesen in der Regel als Integer-Fehlercode.
$ ls nosuch.txt ls: cannot access 'nosuch.txt': No such file or directory $ echo $? # Code for last error. 2
Wenn der Ruby-Interpreter mit dem Betriebssystem interagiert und einen solchen Fehlercode erhält (z. B. 2), ordnet er diesen Code einer bestimmten Ruby-Ausnahmeklasse zu (z. B. Errno::ENOENT).
File.open('nosuch.txt') # => No such file or directory @ rb_sysopen - nosuch.txt (Errno::ENOENT)
Jede dieser Klassen ist
-
Eine verschachtelte Klasse in diesem Modul,
Errno. -
Eine Unterklasse der Klasse
SystemCallError. -
Mit einem Fehlercode verbunden.
Daher
Errno::ENOENT.superclass # => SystemCallError Errno::ENOENT::Errno # => 2
Die Namen der verschachtelten Klassen werden von der Methode Errno.constants zurückgegeben.
Errno.constants.size # => 158 Errno.constants.sort.take(5) # => [:E2BIG, :EACCES, :EADDRINUSE, :EADDRNOTAVAIL, :EADV]
Wie oben gezeigt, ist der Fehlercode, der jeder Klasse zugeordnet ist, als Wert einer Konstante verfügbar; der Wert für eine bestimmte Klasse kann je nach Betriebssystem variieren. Wenn die Klasse für das jeweilige Betriebssystem nicht benötigt wird, ist der Wert Null.
Errno::ENOENT::Errno # => 2 Errno::ENOTCAPABLE::Errno # => 0
Jede Klasse in Errno kann mit optionalen Meldungen erstellt werden.
Errno::EPIPE.new # => #<Errno::EPIPE: Broken pipe> Errno::EPIPE.new("foo") # => #<Errno::EPIPE: Broken pipe - foo> Errno::EPIPE.new("foo", "here") # => #<Errno::EPIPE: Broken pipe @ here - foo>
Siehe SystemCallError.new.
Constants
- E2BIG
-
Fehler „Argumentenliste zu lang“
- EACCES
-
Fehler „Zugriff verweigert“
- EADDRINUSE
-
Fehler „Adresse bereits in Verwendung“
- EADDRNOTAVAIL
-
Fehler „Adresse nicht verfügbar“
- EADV
-
Fehler „Werbefehler“
- EAFNOSUPPORT
-
Fehler „Adressfamilie nicht unterstützt“
- EAGAIN
-
Fehler „Ressource vorübergehend nicht verfügbar, versuchen Sie es erneut (kann denselben Wert wie
EWOULDBLOCKhaben)“ - EALREADY
-
Fehler „Verbindung bereits im Gange“
- EAUTH
-
Fehler „Authentifizierungsfehler“
- EBADARCH
-
Fehler „Falscher CPU-Typ in ausführbarer Datei“
- EBADE
-
Fehler „Schlechter Austausch“
- EBADEXEC
-
Fehler „Schlechte ausführbare Datei“
- EBADF
-
Fehler „Ungültiger Dateideskriptor“
- EBADFD
-
Fehler „Dateideskriptor in ungültigem Zustand“
- EBADMACHO
-
Fehler „Fehlerhaftes Macho-Datei-Format“
- EBADMSG
-
Fehler „Schlechte Nachricht“
- EBADR
-
Fehler „Ungültiger Anforderungsdeskriptor“
- EBADRPC
-
Fehler „RPC-Struktur ist schlecht“
- EBADRQC
-
Fehler „Ungültiger Anforderungscode“
- EBADSLT
-
Fehler „Ungültiger Slot“
- EBFONT
-
Fehler „Falsches Schriftartdateiformat“
- EBUSY
-
Fehler „Gerät oder Ressource beschäftigt“
- ECANCELED
-
Fehler „Vorgang abgebrochen“
- ECAPMODE
-
Fehler „In der Berechtigungsmodus nicht zulässig“
- ECHILD
-
Fehler „Keine Kindprozesse“
- ECHRNG
-
Fehler „Kanalnummer außerhalb des Bereichs“
- ECOMM
-
Fehler „Kommunikationsfehler bei der Übertragung“
- ECONNABORTED
-
Fehler „Verbindung abgebrochen“
- ECONNREFUSED
-
Fehler „Verbindung verweigert“
- ECONNRESET
-
Fehler „Verbindung zurückgesetzt“
- EDEADLK
-
Fehler „Ressourcen-Deadlock vermieden“
- EDEADLOCK
-
Fehler „Datei-Sperren-Deadlock“
- EDESTADDRREQ
-
Fehler „Zieladresse erforderlich“
- EDEVERR
-
Fehler „Gerätefehler; z. B. Druckerpapier leer“
- EDOM
-
Fehler „Mathematik-Argument außerhalb des Definitionsbereichs der Funktion“
- EDOOFUS
-
Fehler „Unsachgemäße Funktionsverwendung“
- EDOTDOT
-
Fehler „RFS spezifischer Fehler“
- EDQUOT
-
Fehler „Festplattenspeicher-Kontingent überschritten“
- EEXIST
-
Fehler „Datei existiert bereits“
- EFAULT
-
Fehler „Ungültige Adresse“
- EFBIG
-
Fehler „Datei zu groß“
- EFTYPE
-
Fehler „Ungültiger Dateityp oder Format“
- EHOSTDOWN
-
Fehler „Host ist ausgefallen“
- EHOSTUNREACH
-
Fehler „Host ist nicht erreichbar“
- EHWPOISON
-
Fehler „Speicherseite hat Hardwarefehler“
- EIDRM
-
Fehler „Identifikator entfernt“
- EILSEQ
-
Fehler „Ungültiges oder unvollständiges Mehrbyte- oder Weitzeichen“
- EINPROGRESS
-
Fehler „Vorgang im Gange“
- EINTR
-
Fehler „Unterbrochener Funktionsaufruf“
- EINVAL
-
Fehler „Ungültiges Argument“
- EIO
-
Fehler „Ein-/Ausgabefehler“
- EIPSEC
-
Fehler „IPsec-Verarbeitungsfehler“
- EISCONN
-
Fehler „Socket ist verbunden“
- EISDIR
-
Fehler „Ist ein Verzeichnis“
- EISNAM
-
Fehler „Ist ein benannter Dateityp“
- EKEYEXPIRED
-
Fehler „Schlüssel ist abgelaufen“
- EKEYREJECTED
-
Fehler „Schlüssel wurde vom Dienst abgelehnt“
- EKEYREVOKED
-
Fehler „Schlüssel wurde widerrufen“
- EL2HLT
-
Fehler „Level 2 angehalten“
- EL2NSYNC
-
Fehler „Level 2 nicht synchronisiert“
- EL3HLT
-
Fehler „Level 3 angehalten“
- EL3RST
-
Fehler „Level 3 zurückgesetzt“
- ELAST
-
Fehler „Größter errno-Wert“
- ELIBACC
-
Fehler „Auf benötigte dynamische Bibliothek kann nicht zugegriffen werden“
- ELIBBAD
-
Fehler „Zugriff auf beschädigte dynamische Bibliothek“
- ELIBEXEC
-
Fehler „Dynamische Bibliothek kann nicht direkt ausgeführt werden“
- ELIBMAX
-
Fehler „Versuch, zu viele dynamische Bibliotheken zu verknüpfen“
- ELIBSCN
-
Fehler „.lib-Sektion in a.out beschädigt“
- ELNRNG
-
Fehler „Link-Nummer außerhalb des Bereichs“
- ELOOP
-
Fehler „Zu viele Ebenen von symbolischen Links“
- EMEDIUMTYPE
-
Fehler „Falscher Medientyp“
- EMFILE
-
Fehler „Zu viele geöffnete Dateien“
- EMLINK
-
Fehler „Zu viele Links“
- EMSGSIZE
-
Fehler „Nachricht zu lang“
- EMULTIHOP
-
Fehler „Mehrfachsprung versucht“
- ENAMETOOLONG
-
Fehler „Dateiname zu lang“
- ENAVAIL
-
Fehler „Keine XENIX-Semaphoren verfügbar“
- ENEEDAUTH
-
Fehler „Authentifizierungsfunktion erforderlich“
- ENETDOWN
-
Fehler „Netzwerk ist ausgefallen“
- ENETRESET
-
Fehler „Verbindung durch das Netzwerk abgebrochen“
- ENETUNREACH
-
Fehler „Netzwerk nicht erreichbar“
- ENFILE
-
Fehler „Zu viele geöffnete Dateien im System“
- ENOANO
-
Fehler „Kein Anode“
- ENOATTR
-
Fehler „Attribut nicht gefunden“
- ENOBUFS
-
Fehler „Kein Pufferplatz verfügbar“
- ENOCSI
-
Fehler „Keine CSI-Struktur verfügbar“
- ENODATA
-
Fehler „Keine Daten verfügbar“
- ENODEV
-
Fehler „Kein solches Gerät“
- ENOENT
-
Fehler „Keine solche Datei oder Verzeichnis“
- ENOEXEC
-
Fehler „Ausführungsformatfehler“
- ENOKEY
-
Fehler „Erforderlicher Schlüssel nicht verfügbar“
- ENOLCK
-
Fehler „Keine Sperren verfügbar“
- ENOLINK
-
Fehler „Link wurde getrennt“
- ENOMEDIUM
-
Fehler „Kein Medium gefunden“
- ENOMEM
-
Fehler „Nicht genügend Speicherplatz/kann keinen Speicher zuweisen“
- ENOMSG
-
Fehler „Keine Nachricht vom gewünschten Typ“
- ENONET
-
Fehler „Maschine ist nicht im Netzwerk“
- ENOPKG
-
Fehler „Paket nicht installiert“
- ENOPOLICY
-
Fehler „Keine solche Richtlinie“
- ENOPROTOOPT
-
Fehler „Protokoll nicht verfügbar“
- ENOSPC
-
Fehler „Kein Speicherplatz mehr auf dem Gerät“
- ENOSR
-
Fehler „Keine STREAM-Ressourcen“
- ENOSTR
-
Fehler „Kein STREAM“
- ENOSYS
-
Fehler „Funktionalität nicht implementiert“
- ENOTBLK
-
Fehler „Blockgerät erforderlich“
- ENOTCAPABLE
-
Fehler „Berechtigungen unzureichend“
- ENOTCONN
-
Fehler „Der Socket ist nicht verbunden“
- ENOTDIR
-
Fehler „Kein Verzeichnis“
- ENOTEMPTY
-
Fehler „Verzeichnis nicht leer“
- ENOTNAM
-
Fehler „Keine XENIX-Namens-Typ-Datei“
- ENOTRECOVERABLE
-
Fehler „Zustand nicht wiederherstellbar“
- ENOTSOCK
-
Fehler „Kein Socket“
- ENOTSUP
-
Fehler „Vorgang nicht unterstützt“
- ENOTTY
-
Fehler „Unangemessener I/O-Steuervorgang“
- ENOTUNIQ
-
Fehler „Name im Netzwerk nicht eindeutig“
- ENXIO
-
Fehler „Kein solches Gerät oder Adresse“
- EOPNOTSUPP
-
Fehler „Vorgang auf Socket nicht unterstützt“
- EOVERFLOW
-
Fehler „Wert zu groß, um ihn in den Datentyp zu speichern“
- EOWNERDEAD
-
Fehler „Besitzer gestorben“
- EPERM
-
Fehler „Vorgang nicht gestattet“
- EPFNOSUPPORT
-
Fehler „Protokollfamilie nicht unterstützt“
- EPIPE
-
Fehler „Unterbrochene Pipe“
- EPROCLIM
-
Fehler „Zu viele Prozesse“
- EPROCUNAVAIL
-
Fehler „Ungültiges Prozedur für Programm“
- EPROGMISMATCH
-
Fehler „Programmversion falsch“
- EPROGUNAVAIL
-
Fehler „RPC-Programm ist nicht verfügbar“
- EPROTO
-
Fehler „Protokollfehler“
- EPROTONOSUPPORT
-
Fehler „Protokoll nicht unterstützt“
- EPROTOTYPE
-
Fehler „Protokoll falscher Typ für Socket“
- EPWROFF
-
Fehler „Gerät ist ausgeschaltet“
- EQFULL
-
Fehler „Ausgabewarteschlange der Schnittstelle ist voll“
- ERANGE
-
Fehler „Ergebnis zu groß“
- EREMCHG
-
Fehler „Remote-Adresse geändert“
- EREMOTE
-
Fehler „Objekt ist remote“
- EREMOTEIO
-
Fehler „Remote-I/O-Fehler“
- ERESTART
-
Fehler „Unterbrochener Systemaufruf sollte neu gestartet werden“
- ERFKILL
-
Fehler „Vorgang aufgrund von RF-Kill nicht möglich“
- EROFS
-
Fehler „Nur-Lese-Dateisystem“
- ERPCMISMATCH
-
Fehler „RPC-Version falsch“
- ESHLIBVERS
-
Fehler „Versionskonflikt bei dynamischer Bibliothek“
- ESHUTDOWN
-
Fehler „Kann nach Beendigung des Transportendpunkts nicht senden“
- ESOCKTNOSUPPORT
-
Fehler „Socket-Typ nicht unterstützt“
- ESPIPE
-
Fehler „Illegaler Suchvorgang“
- ESRCH
-
Fehler „Kein solcher Prozess“
- ESRMNT
-
Fehler „Server-Mount-Fehler“
- ESTALE
-
Fehler „Veralteter Dateihandle“
- ESTRPIPE
-
Fehler „Streams-Pipe-Fehler“
- ETIME
-
Fehler „Timer abgelaufen“
- ETIMEDOUT
-
Fehler „Verbindung abgelaufen“
- ETOOMANYREFS
-
„kann nicht splizen“ Fehler
- ETXTBSY
-
Fehler „Textdatei beschäftigt“
- EUCLEAN
-
Fehler „Struktur muss bereinigt werden“
- EUNATCH
-
Fehler „Protokolltreiber nicht angehängt“
- EUSERS
-
Fehler „Zu viele Benutzer“
- EWOULDBLOCK
-
Fehler „Vorgang würde blockieren“
- EXDEV
-
Fehler „Ungültiger geräteübergreifender Link“
- EXFULL
-
Fehler „Austausch voll“
- NOERROR
-
Kein Fehler