关于ruby:从自定义异常类中获取“消息”

Getting 'message' from a custom exception class

这个问题在这里提到答案。 我需要访问自定义异常的message。 这可能吗?

我认为直接调用message就足够了,如下例所示:

1
2
3
4
5
6
7
8
class MyCustomError < StandardError
  attr_reader :object

  def initialize(object)
    @object = object
    puts message
  end
end

但这不是我的预期。 它给了我一些字符串:

1
"MyModuleNameHere::MyCustomExceptionClassNameHere"

代替:

1
"a message"

我的直觉倾向于否,因为initialize构造函数不接受"a message"文本。


您可以传递消息并呼叫super,这通常会收到消息,例如StandardError.new("oh no")

1
2
3
4
5
6
7
8
9
class MyCustomError < StandardError

  def initialize(message, object)
    # ...
    super(message)
  end
end

MyCustomError.new("Oh no", thing).message # =>"Oh no"

这本关于Ruby例外的电子书非常值得:http://exceptionalruby.com/


您将错误的类名称作为默认message,因为您没有为message设置任何内容。 一旦你设置了什么,你就会得到它。