Respostas:
Um método "def" pode servir como uma declaração de "início":
def foo
...
rescue
...
end
do
/ end
literais 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'
StandardError
e 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, def
como uma begin
declaraçã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