【发布时间】:2020-07-01 07:08:07
【问题描述】:
我有这个代码
args = x.lead_details.last.leads.last.country_id rescue nil
Function(args)
我使用了 rescue 关键字来确保我不会收到类似的错误
undefined method `country_id' for nil:NilClass,
undefined method `leads' for nil:NilClass
有没有更好的方法可以实现这一点?
其他方法是
Function(x.lead_details.last.leads.last.country_id if x.present? && x.lead_details.present? && x.lead_details.last? && so on)
【问题讨论】:
-
只是好奇:
Function是做什么的(我在 docs 中没有找到它),以及根据什么语法规则可以将rescue作为表达式的一部分传递?我可以在这个地方也使用ensure吗? -
“函数”是随机函数的名称。
-
但是你如何管理在参数列表中有一个
rescue?当我尝试这个时,我得到一个语法错误。 -
@user1934428 这很可能是伪代码 - 您不能在参数列表中使用救援和“内联救援” - 例如不应使用
foo(bar) rescue SomeError。 thoughtbot.com/blog/don-t-inline-rescue-in-ruby -
@max : 非常有趣 .... 伪代码导致真正的 Ruby 错误消息。 code0079:如果您想讨论具体问题,请同时发布您的具体代码,而不是发明自己的语法。
标签: ruby-on-rails ruby exception rescue