Вы можете отлавливать разные ошибки и выполнять над ними одно и то же действие или выполнять разные действия. Синтаксис следующий.
Представьте, что вы хотите выполнить разные действия для разных ошибок:
begin
# Do something
rescue JSON::ParseError
# Do something when the error is ParseError
rescue JSON::NestingError, JSON::UnparserError
# Do something when the error is NestingError or UnparserError
rescue JSON::JSONError => e
# Do something when the error is JSONError
# Use the error from this variable `e'
rescue # same as rescue StandardError
# Do something on other errors
end
Если вы собираетесь поместить весь код в функцию внутри блока begin rescue end
, тогда вы можете пропустить слова begin end
, поэтому вместо записи:
def my_func
begin
# do someting
rescue JSON::ParseError
# handle error
end
end
Вы можете написать
def my_func
# do something
rescue JSON::ParseError
# handle error
end
Не забудьте никогда не спасаться от Exception
. Я знаю, что мой ответ может быть слишком широким для вашего вопроса, но я надеюсь, что он поможет вам и другим людям в подобных сомнениях.