gpt4 book ai didi

ruby - 如何知道哪个类引发了 NoMethodError?

转载 作者:太空宇宙 更新时间:2023-11-03 17:39:44 25 4
gpt4 key购买 nike

我不想在某个地方引发 NoMethodError 而只是针对某个类(例如 NilClass)。

例如

begin
maybe_nil_maybe_not_nil = nil
maybe_nil_maybe_not_nil.x
rescure NoMethodError => ex
raise unless ex.class_which_raised == NilClass
end

我现在根据异常的 to_s 执行此操作,但是当您不期望 .id、.product 和其他可能的消息时,消息会有所不同。最好基于元数据/参数来执行此操作。有办法做到这一点吗?

最佳答案

使用异常来控制流程通常不是一个好主意。如果您调用的方法本身引发了 NoMethodError 会发生什么情况? (它会被你的救援方 block 吞没)

你最好使用 respond_to?

raise 'this is bad' if object.nil?

if object.respond_to?(:x)
object.x
end

关于ruby - 如何知道哪个类引发了 NoMethodError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7473615/

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