gpt4 book ai didi

ruby - 比较 Ruby 中已处理的 RuntimeError

转载 作者:数据小太阳 更新时间:2023-10-29 08:38:08 26 4
gpt4 key购买 nike

当我处理 Ruby 异常并将其与我构造的异常对象进行比较时,它的计算结果为 false。为什么会这样?

举个具体的例子,为什么会打印false

begin
raise "An error happened"
rescue => e
end

err = RuntimeError.new("An error happened")
puts e == err

最佳答案

这里是答案:

begin
raise "An error happened"
rescue => e
end

err = RuntimeError.new("An error happened")
[e.backtrace,err.backtrace] # => [["-:2:in `<main>'"], nil]
[e.class,err.class] # => [RuntimeError, RuntimeError]
[e.message,err.message] # => ["An error happened", "An error happened"]
puts e == err
# >> false

#== 的文档是说:

Equality—If obj is not an Exception, returns false. Otherwise, returns true if exc and obj share same class, messages, and backtrace.

现在,在你的情况下,eerr 有 2 个不同的 backtrace,因此它返回 false

关于ruby - 比较 Ruby 中已处理的 RuntimeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21975470/

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