是否有在 Ruby 库 (gem) 或 Ruby on Rails 应用程序中定义自定义错误类型的最佳实践?具体来说:
- 他们在项目结构上属于哪个位置?一个单独的文件,内联相关的模块/类定义,在其他地方?
- 是否有任何约定可以确定何时 以及何时不 创建新的错误类型?
不同的图书馆有不同的做事方式,我还没有注意到任何真正的模式。一些库总是使用自定义错误类型,而另一些库则根本不使用它们;有些具有扩展标准错误的所有错误,而另一些则具有嵌套的层次结构;有些只是空的类定义,有些则有各种巧妙的技巧。
哦,只是因为我觉得称这些“错误类型”有点模棱两可,我的意思是:
class AuthenticationError < StandardError; end
class InvalidUsername < AuthenticationError; end
最佳答案
对于 gem
我已经多次看到您以这种方式定义异常:
gem_dir/lib/gem_name/exceptions.rb
并定义为:
module GemName
class AuthenticationError < StandardError; end
class InvalidUsername < AuthenticationError; end
end
这方面的一个例子是 httparty 中的这样的东西
对于 Ruby on Rails
将它们放在您的 lib/文件夹中一个名为 exceptions.rb 的文件下,该文件看起来像这样:
module Exceptions
class AuthenticationError < StandardError; end
class InvalidUsername < AuthenticationError; end
end
你会像这样使用它:
raise Exceptions::InvalidUsername
关于ruby-on-rails - 在 Ruby 和/或 Rails 中在哪里定义自定义错误类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5200842/