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 0Ogni tipo di errore è una classe a sé. Alcuni comuni:
ZeroDivisionError: divisione di un intero per zeroArgumentError: 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.
Sfida
PrincipianteLeggi 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→ZeroDivisionErrornil-method→NoMethodErrorbad-integer→ArgumentErrorwrong-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
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Le stringhe in dettaglio
Panoramica dei metodi delle stringheInterpolazione di stringheIterare sulle stringheDividere e unireRiepilogo - Tessitore di stringhe4Blocchi, Proc e Lambda
Che cos’è un Block?do..end vs parentesi graffeLa keyword yieldParametri del BlockProc e LambdaRiepilogo - Iteratore personalizzato7Hash in Ruby - Parte 2
Hash.new con valori predefinitiIterare sugli hashHash annidatiUnire e trasformareRipasso - Contatore di frequenza10Progetto - Registri degli studenti
Panoramica del progettoAggiungere uno studente2Intervalli
Che cos'è un intervallo?Metodi degli intervalliIntervalli in Case / WhenRiepilogo - Esercitarsi con gli intervalli5La potenza di Enumerable
Select e RejectConcatenare MapReduce / Injectcount, all?, any?, none?group_by e partitionsort_by, min_by, max_byRiepilogo - Pipeline di dati3Array bidimensionali
Basi degli array 2DAccesso agli elementi 2DIterare sugli array 2DPattern comuni con array 2DRiepilogo - Operazioni sulle matrici6Progetto - Gestore della biblioteca
Panoramica del progettoAggiungere un libro9Gestione degli errori
Che cos’è un’eccezione?begin / rescueClausole rescue multipleensure e raiseRipasso - Calcolatrice sicuraEsercitati da solo: Compilatore Ruby online