Menu
Coddy logo textTech

Che cos’è un’eccezione?

Fa parte della sezione Logica e flusso del percorso Ruby di Coddy. Lezione 43 di 56.

Quando qualcosa va storto durante l’esecuzione, dividendo per zero, analizzando "abc" come intero o chiamando un metodo su nil: Ruby solleva un’eccezione. Il programma si arresta e Ruby stampa cosa è successo e dove è successo.

10 / 0
# ZeroDivisionError: divisione per 0

Ogni tipo di errore è una classe a sé. Alcuni comuni:

  • ZeroDivisionError: divisione di un intero per zero
  • ArgumentError: argomenti errati passati a un metodo (Integer("abc"))
  • NoMethodError: chiamare un metodo che il ricevente non possiede (nil.upcase)
  • TypeError: operazione sul tipo di oggetto sbagliato ("a" + 1)

Ogni classe di eccezione ha un .message: la descrizione leggibile da una persona che Ruby stampa quando l'eccezione non viene gestita. Le prossime lezioni mostrano come intercettare queste eccezioni, così il tuo programma continua a funzionare.

challenge icon

Sfida

Principiante

Leggi una singola riga di input, il nome di una singola espressione Ruby. Stampa il nome della classe di eccezione che Ruby solleverebbe per essa. Usa un’istruzione case (non è necessario sollevare davvero un’eccezione):

  • divide-by-zero → ZeroDivisionError
  • nil-method → NoMethodError
  • bad-integer → ArgumentError
  • wrong-type → TypeError
  • qualsiasi altro valore → Unknown

Per l’input nil-method, l’output è NoMethodError.

Provalo tu

kind = gets.chomp

# TODO: case kind ... stampa il nome della classe di eccezione corrispondente
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Ruby online