无法访问自定义Exception属性

时间:2014-08-31 14:22:39

标签: ruby-on-rails ruby-on-rails-4 exception-handling

我有一个自定义的Exception类,如下所示:

class CustomError < StandardError
  def initialize(message = nil)
    @message = message
    @type = "custom_error"
  end
end

这正在我的应用程序控制器中处理,如下所示:

rescue_from CustomError do |e|
  render json: e.type
end

现在,当我使用raise CustomError.new("Oops I did it again")引发异常时,我得到NoMethodError 未定义方法`type'

发生了什么事?为什么我无法使用type访问e.type

2 个答案:

答案 0 :(得分:1)

您无法调用e.type,因为您尚未定义type方法。

您可以使用

attr_reader :type

添加此类访问者。

答案 1 :(得分:0)

原来我错过了attr_reader。这是最终的Exception类的样子:

class CustomError < StandardError
  attr_reader :type

  def initialize(message = nil)
    @message = message
    @type = "custom_error"
  end
end

参考:https://stackoverflow.com/a/4371458/2022751