通常我需要抛出一个自定义(化)错误。就像由于参数不匹配而无法找到资源时一样。
我更喜欢抛出现有错误,或者抛出从现有错误继承的错误。这样,我就不会介绍已经定义并且可以完美使用的错误类(DRY)。但它也允许保持措辞和风格相同,通过继承和简单地改变一两个词来澄清与原始错误的区别。
例如:
Foo.new
Foo.some_external_id = nil
Foo.fetch_external_resource
# => InvalidOptions: Calling Foo#fetch_external_resource with nil is invalid
我很确定已经定义了此类错误。事实上,在阅读了很多行代码之后,我发现我的 MongoID 驱动程序有Mongoid::Errors::InvalidOptions: Calling Document#find with nil is invalid
.
Ruby Core 和 Ruby on Rails 中是否有可用的错误类列表?有没有办法为您当前的项目获取这样的列表?
重用和/或继承现有错误是否明智,或者我应该维护自己的自定义集?