x = StandardError.new(:hello)
y = StandardError.new(:hello)
x == y # => true
x === y # => true
begin
raise x
rescue x
puts "ok" # gets printed
end
begin
raise x
rescue y
puts "ok" # doesn't get printed
end
2番目の「ok」が印刷されないのはなぜですか?私はそれを理解することはできません。ここで、rubyが===
演算子を使用して例外をレスキュー句に一致させることを読みましたが、表面上はそうではありません。
Ruby1.9.3を使用しています
編集:それで、それをした後のように見えますraise x
、x == y
そしてx === y
もはや保持しません。これは、同じバックトレースがなくなっx
たためと思われます。y