Ruby Language Création d'un type d'exception personnalisé


Exemple

Une exception personnalisée est toute classe qui étend Exception ou une sous-classe d' Exception .

En général, vous devez toujours étendre StandardError ou un descendant. La famille des Exception concerne généralement les erreurs de machine virtuelle ou de système, les récupérer peut empêcher une interruption forcée de fonctionner comme prévu.

# Defines a new custom exception called FileNotFound
class FileNotFound < StandardError
end

def read_file(path)
  File.exist?(path) || raise(FileNotFound, "File #{path} not found")
  File.read(path)
end

read_file("missing.txt")  #=> raises FileNotFound.new("File `missing.txt` not found")
read_file("valid.txt")    #=> reads and returns the content of the file

Il est courant de nommer des exceptions en ajoutant le suffixe d' Error à la fin:

  • ConnectionError
  • DontPanicError

Toutefois, lorsque l'erreur est explicite, vous n'avez pas besoin d'ajouter le suffixe d' Error car il serait redondant:

  • FileNotFound vs FileNotFoundError
  • DatabaseExploded vs DatabaseExplodedError