Eccezioni

  • Segnalare le eccezioni con il metodo raise.

  • Omettere RuntimeError nella versione a due parametri di raise.

# bad
raise RuntimeError, "message"

# good - signals a RuntimeError by default
raise "message"
  • Preferisce fornire una classe di eccezione e un messaggio come due argomenti separati da raise, invece di un'istanza di eccezione.

# bad
raise SomeException.new("message")
# Note that there is no way to do `raise SomeException.new("message"), backtrace`.

# good
raise SomeException, "message"
# Consistent with `raise SomeException, "message", backtrace`.
  • Evitare il ritorno da un blocco ensure. Se si ritorna esplicitamente da un metodo all'interno di un blocco ensure, il ritorno avrà la precedenza su qualsiasi eccezione sollevata e il metodo ritornerà come se non fosse stata sollevata alcuna eccezione. In effetti, l'eccezione sarà gettata via silenziosamente.

# bad
def foo
  raise
ensure
  return "very bad idea"
end
  • Utilizzare blocchi di begin impliciti, ove possibile.

  • Evitare dichiarazioni rescue vuote.

  • Evitare il rescue nella sua forma di modificatore.

  • Evitare di effettuare il catch della classe Exception.

  • Preferire le eccezioni della libreria standard all'introduzione di nuove classi di eccezioni.

  • Utilizzare nomi significativi per le variabili di eccezione.

Last updated

Was this helpful?