首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我是不是滥用“救援”来换取零支票?

我是不是滥用“救援”来换取零支票?
EN

Stack Overflow用户
提问于 2010-09-18 01:57:54
回答 4查看 1K关注 0票数 9

我使用rescue做任何事情,不仅仅是为了“拯救”异常。我的意思是,我喜欢它省去了我验证和重复检查数据的方式。

例如,假设我有一个模型Item,它可能有User,也可能没有。然后,当我想要获取物品的所有者姓名时,我写道:

代码语言:javascript
运行
复制
item.user.name rescue ""

而不是像这样

代码语言:javascript
运行
复制
item.user.nil? ? "" : item.user.name

这也是同样的想法,因为nil.name触发了一个我用""拯救的异常,但我不太确定这是不是一个好的实践。它能做我想做的事,而且代码更少,但是...我不知道,到处都是rescue的字眼让我觉得没有安全感。

这是一种糟糕的做法,还是滥用rescue关键字是合法的?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-09-18 02:21:47

我认为你有点滥用救援,尽管在Rails中,有一个特定的方法来解决这些问题:tryDocumentation

在您的例子中,item.user.try(:name)可能是一种更好的方法。

票数 7
EN

Stack Overflow用户

发布于 2010-09-18 02:04:47

我想说,这不是一个真正养成的好习惯。我从来没有在Ruby中真正使用过这个特性,因为我觉得我只是在隐藏错误案例。同样值得注意的是,您正在拯救任何和所有异常,而没有指定任何类型的预期错误。它看起来总是会使调试变得比需要的更难,尽管,就像我说过的,我自己从来没有费心去使用它。

票数 3
EN

Stack Overflow用户

发布于 2010-09-18 02:01:14

就像在大多数其他语言中一样,自己进行检查比使用救援运行得更快。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3737752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档