e p e.backtrace_-6ren">
gpt4 book ai didi

ruby - ArgumentError 是否缺少 backtrace_locations?

转载 作者:太空宇宙 更新时间:2023-11-03 16:02:52 26 4
gpt4 key购买 nike

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

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

如果我手动引发 ArgumentError 也是一样的:

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

但是,当我通过调用参数数量错误的方法引发真正的 ArgumentError 时,backtrace_locationsnil,这是意外的对我来说:

def foo; end

begin
foo(:bar)
rescue => e
p e.backtrace_locations
end
# => nil

在相同的情况下,经典的Exception#backtrace 返回一个数组,如预期的那样:

def foo; end

begin
foo(:bar)
rescue => e
p e.backtrace
end
# => ["this_file:1:in `foo'", "this_file:4:in `<main>'"]

上面第三种情况Exception#backtrace_locations的返回值是nil是故意的吗?如果是这样,什么时候 Exception#backtrace_locations 变为 nil?有这方面的文件吗?或者,它是 Ruby 错误吗?

此时,我认为这是一个错误,并且reported it .

最佳答案

这是一个错误,维护者 ko1 只是​​ fixed it在修订版 44411 中。希望它能进入今天的 Ruby 2.1 版本。

编辑 原来还没有修复。今天发布的 Ruby 2.1 仍然存在这个问题。

编辑 根据维护者的说法,该修复将合并到 Ruby 2.1.1 中。

关于ruby - ArgumentError 是否缺少 backtrace_locations?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20765660/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com