Ruby Language Creazione di un tipo di eccezione personalizzato


Esempio

Un'eccezione personalizzata è qualsiasi classe che estende Exception o una sottoclasse di Exception .

In generale, si dovrebbe sempre estendere l'errore StandardError o un discendente. La famiglia Exception è in genere per errori di macchina virtuale o di sistema, il loro salvataggio può impedire un'interruzione forzata di funzionare come previsto.

# 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

È comune denominare le eccezioni aggiungendo il suffisso Error alla fine:

  • ConnectionError
  • DontPanicError

Tuttavia, quando l'errore è autoesplicativo, non è necessario aggiungere il suffisso Error perché sarebbe ridondante:

  • FileNotFound vs FileNotFoundError
  • DatabaseExploded vs DatabaseExplodedError