Risposte:
Un metodo "def" può servire come un'istruzione "begin":
def foo
...
rescue
...
end
do
/ i end
valori letterali di blocco formano blocchi di eccezioni implicite.
rescue TypeError; rescue NameError
- oppure puoi separare le classi di eccezione con virgole, ad esempiorescue TypeError, NameError
Puoi anche salvare in linea:
1 + "str" rescue "EXCEPTION!"
stamperà "ECCEZIONE!" poiché "La stringa non può essere forzata in Fixnum"
StandardError
e tutte le sue sottoclassi, come NameError
- il che significa che anche un errore di battitura nel tuo codice non solleverà un errore .. Vedi thoughtbot.com/blog/don-t-inline-rescue-in- rubino .
Esempio:
begin
# something which might raise an exception
rescue SomeExceptionClass => some_variable
# code that deals with some exception
ensure
# ensure that this code always runs
end
Ecco, def
come una begin
dichiarazione:
def
# something which might raise an exception
rescue SomeExceptionClass => some_variable
# code that deals with some exception
ensure
# ensure that this code always runs
end