加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – `var = something rescue nil`行为

发布时间:2020-12-17 01:19:49 所属栏目:百科 来源:网络整理
导读:在 Ruby中,您可以在任务结束时编写救援以捕获可能出现的任何错误.我有一个函数(下面:a_function_that_may_fail),如果不满足某些条件,它会让它抛出错误.以下代码运行良好 post = {}# Other Hash stuffpost['Caption'] = a_function_that_may_fail rescue nil
在 Ruby中,您可以在任务结束时编写救援以捕获可能出现的任何错误.我有一个函数(下面:a_function_that_may_fail),如果不满足某些条件,它会让它抛出错误.以下代码运行良好
post = {}
# Other Hash stuff
post['Caption'] = a_function_that_may_fail rescue nil

但是,如果函数失败,我想发帖[‘Caption’]甚至没有设置.

我知道我能做到:

begin
  post['Caption'] = a_function_that_may_fail
rescue
end

但感觉有点过分 – 是否有更简单的解决方案?

解决方法

问题是优先的.最简单的解决方案:
(post['Caption'] = a_function_that_may_fail) rescue nil

但是,更改这样的优先级有点深奥.如果你可以重写你的a_function_that_may_fail,如果失败则返回nil可能会更好.

您还可以使用临时变量并测试nilness:

caption = a_function_that_may_fail rescue nil
post['Caption'] = caption unless caption.nil?

一个非常小的区别是,如果a_function_that_may_fail没有引发异常但是返回了nil,则不会设置post [‘Caption’].

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读