Ответы:
Метод def может служить оператором начала:
def foo
...
rescue
...
end
do
/ end
блочные литералы образуют неявные блоки исключений.
rescue TypeError; rescue NameError
- или вы можете запятую отдельных классов исключений, напримерrescue TypeError, NameError
Вы также можете спасти встроенные:
1 + "str" rescue "EXCEPTION!"
распечатает "ИСКЛЮЧЕНИЕ!" так как 'String не может быть преобразован в Fixnum'
StandardError
и все его подклассы, например NameError
- это означает, что даже опечатка в вашем коде не вызовет ошибку. См. Thinkbot.com/blog/don-t-inline-rescue-in- рубин .
Пример:
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
Вот def
как begin
заявление:
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