为什么start / rescue / else在1.9.2和1.8.7上表现不同

时间:2011-06-24 11:15:52

标签: ruby exception ruby-1.9 ruby-1.9.2 ruby-1.8

我正在使用方法mm。在ruby 1.9.2中,它表现得很奇怪,而不是预期的结果1.9.2=>10我得到了

ELSE **
1.9.2=>8

知道发生了什么事吗?

class A

 def mm(data)
   begin
     send_len = data
     return send_len
   rescue Exception
     STDOUT.write("Rescue *#{$!}*\n")
   else
     STDOUT.write("ELSE *#{$!}*\n")
   end
 end

end # class A

a = A.new
print "#{RUBY_VERSION}=>#{a.mm(10)}\n"

1.8.7我得到了预期的结果:

1.8.7=>10

1 个答案:

答案 0 :(得分:3)

这是open bug in Ruby。但是,有一个讨论是,它应该表现得像1.8中的表现还是1.9中的行为。

Ruby的作者Matz,believes that it should behave as in 1.8