Как спасти от конкретной ошибки (Ruby on Rails) - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть конкретная ошибка, от которой я хочу спастись;

Ошибка, извлеченная из консоли: ...

JSON::ParserError: 751: unexpected token at ''

begin
    #do stuff
rescue
    if error is <JSON::ParserError: 751: unexpected token at ''>
         #do stuff
         next
    end
end

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Вы можете отлавливать разные ошибки и выполнять над ними одно и то же действие или выполнять разные действия. Синтаксис следующий.

Представьте, что вы хотите выполнить разные действия для разных ошибок:

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. Я знаю, что мой ответ может быть слишком широким для вашего вопроса, но я надеюсь, что он поможет вам и другим людям в подобных сомнениях.

0 голосов
/ 02 ноября 2018

Вы можете передать имя для спасения, например так:

begin
  # ...
rescue JSON::ParserError
  # ...
end

Если вы хотите передать несколько классов ошибок для спасения, вы можете сделать это, разделяя их запятыми

...