Ruby ArgumentError是否缺少回溯位置?

Ruby ArgumentError是否缺少回溯位置?,ruby,ruby-2.1,Ruby,Ruby 2.1,当我调用Exception#backtrace_locations时,它通常会返回一个数组,如预期的那样: begin raise "foo" rescue => e p e.backtrace_locations end # => ["this_file:2:in `<main>'"] def foo; end begin foo(:bar) rescue => e p e.backtrace end # => ["this_file:1

当我调用
Exception#backtrace_locations
时,它通常会返回一个数组,如预期的那样:

begin
  raise "foo"
rescue => e
  p e.backtrace_locations
end
# => ["this_file:2:in `<main>'"]
def foo; end

begin
  foo(:bar)
rescue => e
  p e.backtrace
end
# => ["this_file:1:in `foo'", "this_file:4:in `<main>'"]
但是,当我通过调用具有错误参数数的方法而引发实际的
ArgumentError
时,
backtrace\u locations
nil
,这对我来说是意外的:

def foo; end

begin
  foo(:bar)
rescue => e
  p e.backtrace_locations
end
# => nil
在相同的情况下,经典的
Exception#backtrace
返回一个数组,如下所示:

begin
  raise "foo"
rescue => e
  p e.backtrace_locations
end
# => ["this_file:2:in `<main>'"]
def foo; end

begin
  foo(:bar)
rescue => e
  p e.backtrace
end
# => ["this_file:1:in `foo'", "this_file:4:in `<main>'"]
def-foo;结束
开始
foo(:bar)
救援=>e
体育回溯
结束
#=>[“此文件:1:在'foo'中,”此文件:4:在''''中]
在上述第三种情况下,
Exception#backtrace_locations
的返回值是否为
nil
?如果是,什么时候
异常#回溯_位置
变为
?有这方面的文件吗?或者,它是一个Ruby bug


在这一点上,我认为这是一个bug,而且。

这是一个bug,而维护者ko1只是在版本44411中。希望它能在今天的Ruby 2.1版本中发布

编辑结果表明它尚未修复。今天发布的Ruby 2.1仍然存在这个问题


编辑根据一位维护人员的说法,修复程序将被整合到Ruby 2.1.1中。

看起来(如果是同一个问题)它还没有出现在2.1中:@CDub你说它还没有出现是什么意思?版本44170应该已经实现了它。方法是返回
nil
;它是被定义的。如果它没有定义,那么它应该引发一个未定义的错误。根据12天前在上述线程中的最后一条评论:“目标版本已从当前版本:2.1.0更改为下一个次要版本”。。。我读到“它将在下一个小版本中,而不是在2.1.0中。”或者我发现了错误的问题。。。我很容易犯错。我今天至少错了131241次。:)@CDub感谢您的评论。我对ko1关于该线程的最后一条评论的解释是,他已经完成了
backtrace\u locations
,但尚未完成
set\u backtrace\u locations
或类似操作。从这个意义上说,它完成了一半,并且被设置为下一个小调。