Respostas:
Um método "def" pode servir como uma declaração de "início":
def foo
...
rescue
...
end
do/ endliterais de bloco formam blocos de exceção implícitos.
rescue TypeError; rescue NameError- ou você pode separar as classes de exceção por vírgula, por exemplorescue TypeError, NameError
Você também pode resgatar inline:
1 + "str" rescue "EXCEPTION!"
irá imprimir "EXCEÇÃO!" já que 'String não pode ser coagida em Fixnum'
StandardErrore todas as suas subclasses, como NameError- o que significa que até mesmo um erro de digitação em seu código não gerará um erro. Consulte Thoughtbot.com/blog/don-t-inline-rescue-in- rubi .
Exemplo:
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
Aqui, defcomo uma begindeclaração:
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