Я не могу найти много информации о пользовательских классах исключений.
Что я знаю
Вы можете объявить свой собственный класс ошибок и наследовать его от StandardError
, поэтому он может быть rescue
d:
class MyCustomError < StandardError
end
Это позволяет вам поднять его, используя:
raise MyCustomError, "A message"
и позже, получите это сообщение при спасении
rescue MyCustomError => e
puts e.message # => "A message"
Что я не знаю
Я хочу указать свое исключение на некоторые настраиваемые поля, но я хочу наследовать атрибут message
из родительского класса. Я узнал, что в этом разделе, что @message
не является переменной экземпляра класса исключения, поэтому я беспокоюсь, что мое наследство выиграло ' т работы.
Может ли кто-нибудь дать мне более подробную информацию об этом? Как реализовать собственный класс ошибок с атрибутом object
? Правильно ли это:
class MyCustomError < StandardError
attr_reader :object
def initialize(message, object)
super(message)
@object = object
end
end
И затем:
raise MyCustomError.new(anObject), "A message"
чтобы получить:
rescue MyCustomError => e
puts e.message # => "A message"
puts e.object # => anObject
будет ли это работать, и если да, то это правильный способ сделать что-то?