2
对不起,我不确定如何分类这个问题。我正在更新一些ruby代码到1.9.3,并且看到一些奇怪的行为。蒸出的问题,我得到:ruby版本之间隐含的异常类别差异
def convert(exception)
raise exception.message
end
begin
convert(StandardError.new(StandardError))
rescue => e
puts e.class
end
在1.9.2中,输出
StandardError
和1.9.3,TE输出
RuntimeError
展望虽然红宝石文档并且发布笔记并没有给我任何线索,因为这里可能会发生什么,并且任何帮助都会被赞赏!
好的,这是有道理的。我需要更好地阅读c代码。为了清楚起见,并不是说消息本身返回了一个类,它只是返回了传入的任何对象,而应该将其转换为字符串。谢谢您的帮助! – Chris 2012-03-08 21:06:53
它应该返回一个'String',是的,但是它实际返回的结果有点难以辨认。在它上面调用'.class'会产生'Class',但是可能会有更多奇怪的事情发生。它很难遵循,因为它在C(和C Ruby是巨大的)。 – 2012-03-08 21:09:17