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
为什么不打印第二个“ok”?我想不通。我在这里读到ruby 使用===
运算符将异常与救援子句匹配,但表面上并非如此。
我正在使用 Ruby 1.9.3
编辑:所以似乎在做之后,raise x
不再持有。似乎因为和不再有相同的回溯。x == y
x === y
x
y