如何在Rails中包含自定义异常?

Jul*_*ray 5 ruby ruby-on-rails

我不太清楚Rails如何包含(或不?)app目录中的某些文件.

例如,我创建了一个新的目录app/exceptions来创建我自己的异常.现在,从帮助文件中,我想提出一个异常.

我想在这个助手中加入一些东西吗?

助手:助手/ communications_helper.rb

//should I include something or it's suppose to be autoloaded?
module CommunicationsHelper
 begin.
 .
 . 
 .
  raise ParamsException, "My exception is lauch!"
 rescue StandardError => e
...
 end
end
Run Code Online (Sandbox Code Playgroud)

例外:exceptions/params_exception.rb

class ParamsException < StandardError
  def initialize(object, operation)
    puts "Dans paramsException"
  end

end
Run Code Online (Sandbox Code Playgroud)

没有什么具体来自我在产出中的提升......

谢谢!

编辑:谢谢大家,你的两个答案以不同的方式有所帮助.我没有像你说的那样提高异常,但我也要忘记更新我的config.rb.所以我现在:

rescue StandardError => e
  raise ParamsError.new("truc", "truc")
Run Code Online (Sandbox Code Playgroud)

其他问题,你知道我在哪里能加注吗?因为我已经陷入困境,所以我很少迷路......

SHS*_*SHS 3

首先,我认为您错误地提出了例外。

在您的自定义异常类中,您的初始化方法接受参数。因此你应该用以下方法来提高它:

raise CustomError.new(arg1, arg2, etc.)
Run Code Online (Sandbox Code Playgroud)

读这个

最后,如果 CustomError 是 StandardError 的子级,则不要从 StandardError 中拯救;否则你的手动“加注”将会被拯救。