Ruby 2.1.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > SystemCallErrorクラス > ===

singleton method SystemCallError.===

self === other -> bool[permalink][rdoc]

other が SystemCallError のサブクラスのインスタンスで、 かつ、other.errno の値が self::Errno と同じ場合に真を返します。そうでない場合は偽を返します。

従って、特に other が self.kind_of?(other) である場合には Module#=== と同様に真を返します。 その他に、 Errno::EXXX::Errno == Errno::EYYY::Errno である場合にも Errno::EXXX == Errno::EYYY.new は真を返します。

エラー名は異なるがエラーコードは同じであるような Errno::EXXX 例外をまとめて捕捉するために Module#=== を上書きしていました。 しかし、Ruby 1.8 のリリース時点では同じ errno 値を持つクラスは一つしか作られないようになりました。そのため現在はこのメソッドは実質上 Module#=== と同じ意味しかありません。

[PARAM] other:
任意のオブジェクト

p Errno::EAGAIN::Errno
p Errno::EWOULDBLOCK::Errno
begin
  raise Errno::EAGAIN, "pseudo error"
rescue Errno::EWOULDBLOCK
  p $!
end

# => 11
     11
     #<Errno::EAGAIN: pseudo error>