如何创建rails 3自定义异常



我正在创建一些自定义异常,如下

lib/exceptions.rb

module Exceptions
  class MemberOverFlow < StandardError
  end
  rescue_from MemberOverFlow do |exception|
    redirect_to root_url, :alert => exception.message
  end
end

我过去常常提出这样的例外。

raise Exception::MemberOverFlow"member count overflow"

它给出以下错误

NoMethodError in MembersController#create
undefined method `MemberOverFlow' for Exception:Class

有人能告诉我出了什么问题吗

感谢

您是否需要控制器中试图引发异常的模块?

require "exception" #or wherever you have placed the module file

使用:
raise Exception::MemberOverFlow.new("member count overflow")

如果仍然不起作用,请尝试更改模块的名称"Exception",因为Exception是Ruby中定义的现有异常类。

没有人特别指出原始帖子中的错误。以下内容:

raise Exceptions::MemberOverFlow"member count overflow"

MemberOverFlow视为METHOD,而不是class。您需要在MemberOverFlow类上调用new方法,这就是amit_axena的答案所指出的。

这个答案解决了问题,但我只是觉得有必要从语法上指出你在做什么,这样如果你将来遇到类似的问题,你就会知道发生了什么

您的lib目录的内容不会自动加载到rails 3中,您需要像在config/application.rb:中那样指定它们

config.autoload_paths += %W(#{config.root}/lib)

也许你没有那样做?

相关内容

  • 没有找到相关文章

最新更新