Получение «сообщения» из пользовательского класса исключений - PullRequest
0 голосов
/ 24 мая 2018

Этот вопрос относится к ответу здесь .Мне нужно получить доступ к 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 голосов
/ 24 мая 2018

Вы можете передать сообщение и позвонить 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/

0 голосов
/ 24 мая 2018

Вы получаете имя класса ошибки по умолчанию message, потому что вы ничего не установили для message.Как только вы установите что-то, вы получите это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...