我使用rescue做任何事情,不仅仅是为了“拯救”异常。我的意思是,我喜欢它省去了我验证和重复检查数据的方式。
例如,假设我有一个模型Item,它可能有User,也可能没有。然后,当我想要获取物品的所有者姓名时,我写道:
item.user.name rescue ""而不是像这样
item.user.nil? ? "" : item.user.name这也是同样的想法,因为nil.name触发了一个我用""拯救的异常,但我不太确定这是不是一个好的实践。它能做我想做的事,而且代码更少,但是...我不知道,到处都是rescue的字眼让我觉得没有安全感。
这是一种糟糕的做法,还是滥用rescue关键字是合法的?
发布于 2010-09-18 02:21:47
我认为你有点滥用救援,尽管在Rails中,有一个特定的方法来解决这些问题:try。Documentation
在您的例子中,item.user.try(:name)可能是一种更好的方法。
发布于 2010-09-18 02:04:47
我想说,这不是一个真正养成的好习惯。我从来没有在Ruby中真正使用过这个特性,因为我觉得我只是在隐藏错误案例。同样值得注意的是,您正在拯救任何和所有异常,而没有指定任何类型的预期错误。它看起来总是会使调试变得比需要的更难,尽管,就像我说过的,我自己从来没有费心去使用它。
发布于 2010-09-18 02:01:14
就像在大多数其他语言中一样,自己进行检查比使用救援运行得更快。
https://stackoverflow.com/questions/3737752
复制相似问题