模块 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
常量
- NOERROR
无错误