Ruby Language Ajout d'informations à des exceptions (personnalisées)


Exemple

Il peut être utile d'inclure des informations supplémentaires avec une exception, par exemple à des fins de journalisation ou pour permettre une gestion conditionnelle lorsque l'exception est interceptée:

class CustomError < StandardError
  attr_reader :safe_to_retry

  def initialize(safe_to_retry = false, message = 'Something went wrong')
    @safe_to_retry = safe_to_retry
    super(message)
  end
end

En soulevant l'exception:

raise CustomError.new(true)

Récupérer l'exception et accéder aux informations supplémentaires fournies:

begin
  # do stuff
rescue CustomError => e
  retry if e.safe_to_retry
end