1、异常的相等性 ,如果两个异常的class、message和backtrace一样,那么认为这两个异常是相等的,可以通过==判断。
def
method
raise ' foobar '
end
errors = []
2 .times do
Thread.new do
begin
method
rescue => e
errors << e
end
end.join
end
puts errors[ - 2 ] == errors[ - 1 ] # => true (1.9) false(1.8)
raise ' foobar '
end
errors = []
2 .times do
Thread.new do
begin
method
rescue => e
errors << e
end
end.join
end
puts errors[ - 2 ] == errors[ - 1 ] # => true (1.9) false(1.8)
2、SystemStackError现在继承Exception类,而非原来的StandardError :
1.8
SystemStackError
<
StandardError
#
=> true
1.9
SystemStackError
<
StandardError
#
=> nil
SystemStackError < Exception # => true
SystemStackError < Exception # => true
3、移除了Exception#to_str方法 :
begin
raise " foo "
rescue
$!.to_str
end
# => undefind method "to_str" for #
raise " foo "
rescue
$!.to_str
end
# => undefind method "to_str" for #