ruby - ArgumentError 是否缺少 backtrace_locations?

标签 ruby ruby-2.1

当我打电话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_locationsnil在上面的第三种情况下是有意的吗?如果是这样,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/

相关文章:

ruby-on-rails - Rake 文档 :app fails after upgrading to Ruby 2. 1.1 和 Rails 4.1

ruby-on-rails - 预期等效的拼写会导致错误。为什么?

ruby - ruby 1.8 和 ruby​​ 2.1 的向后兼容代码不适用于文件模块

html - 如何在 sinatra 字符串中放置 html 标签

ruby-on-rails - 在 respond_to block 中呈现 JSON 时如何覆盖 Kaminari 分页?

ruby-on-rails - 在 heroku 上找不到字体 (404)

Rubymine 无法更改语言级别 |更新到 Ruby 2.1.1

ruby - << 与 + 有何不同?

html - VSCODE - 如何自动关闭 ruby​​ on rails html.erb 文件的 html 代码

ruby - 与 ARGF#set_encoding 的混淆