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

时间:2014-12-20 14:26:08

标签: ruby-on-rails ruby

我不太了解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

例外:例外/ params_exception.rb

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

end

输出中我的加注没有具体的内容......

谢谢!

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

rescue StandardError => e
  raise ParamsError.new("truc", "truc")

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

2 个答案:

答案 0 :(得分:4)

如果您没有看到raise的输出,请确保您没有意外地解决错误,因为您的错误是StandardError的子类:

begin
  raise ParamsException, "My exception is lauch!"
rescue StandardError => e # This also rescues ParamsException
end

作为旁注,在Ruby中,通常的做法是将自定义错误以Error而不是Exception结尾。与其他一些编程语言不同,以Exception结尾的类意味着系统级错误。

答案 1 :(得分:3)

首先,我认为您错误地提出了异常。

在自定义异常类中,initialize方法接受参数。因此你应该用:

来提高它
raise CustomError.new(arg1, arg2, etc.)

Read this

最后,如果CustomError是StandardError的子级,请不要从StandardError中解救;否则你的手册'加注'将被拯救。