我注意到 Rails 中的某些方法使用 !
运算符在无效时引发异常。例如,User.create!
我为什么以及什么时候想要使用这样的东西?
谢谢。
最佳答案
我可能出于各种原因想要异常(exception)
- 我可能想确保该方法成功,但我不想在这里进行任何实际的错误处理。但如果出现问题,我可能会接受请求爆炸(例如生成 HTTP 500)
- 我可能希望在其他地方进行一些错误处理,例如调用链中的某个方式。通常,在错误处理的很长一段路要走一些错误状态会更加冗长和讨厌。结构化错误处理,即
begin ... rescue ... end
使这一点更清楚。 - 异常可以附加附加数据(例如错误消息)
- 如果您有不同的错误类型,用不同的异常类来表示错误类型而不是一些神奇的 id 值(在 C 中很常见)通常会更清楚
当错误状态数量很少并且在调用后直接完全处理时,有充分的理由不使用异常而是使用状态标志。但是每一种技术都有它的位置和时间。
顺便说一句,save
方法在内部调用 save!
,处理潜在的异常并在有异常时返回 false。参见 the code用于实现。
关于ruby-on-rails - 我什么时候/为什么要在方法上引发异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10404674/