Как использовать спасение в Ruby без начального и конечного блоков

Я знаю стандартную технику, когда начинаю спасательный конец

Как использовать блок спасения самостоятельно.

Как это работает и как он узнает, какой код отслеживается?

Ответ 1

Метод "def" может служить "началом":

def foo
  ...
rescue
  ...
end

Ответ 2

Вы также можете спасти inline:

1 + "str" rescue "EXCEPTION!"

распечатает "ИСКЛЮЧЕНИЕ!". так как "Строка не может быть принудительно введена в Fixnum"

Ответ 3

Я использую команду def/rescue много с проверками ActiveRecord:

def create
   @person = Person.new(params[:person])
   @person.save!
   redirect_to @person
rescue ActiveRecord::RecordInvalid
   render :action => :new
end

Я думаю, что это очень скудный код!

Ответ 4

Пример:

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