我有一个自定义的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
?
答案 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