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
或类似操作。从这个意义上说,它完成了一半,并且被设置为下一个小调。