获取消息'来自自定义异常类

时间:2018-05-24 07:40:20

标签: ruby exception-handling

这个问题涉及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"文本。

2 个答案:

答案 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/