这个问题涉及an answer here。我需要访问自定义异常的message
。这可能吗?
我认为直接调用message
就足够了,例如:
class MyCustomError < StandardError
attr_reader :object
def initialize(object)
@object = object
puts message
end
end
但这不是我的预期。它给了我一些字符串:
"MyModuleNameHere::MyCustomExceptionClassNameHere"
而不是:
"a message"
我的直觉倾向于否,因为initialize
构造函数不接受"a message"
文本。
答案 0 :(得分:1)
您将错误的类名称设为默认message
,因为您尚未为message
设置任何内容。一旦你设置了什么,你就会得到它。
答案 1 :(得分:1)
您可以传递邮件并致电super
,这通常会收到消息,例如StandardError.new("oh no")
。
class MyCustomError < StandardError
def initialize(message, object)
# ...
super(message)
end
end
MyCustomError.new("Oh no", thing).message # => "Oh no"
这本关于Ruby例外的电子书非常值得:http://exceptionalruby.com/