Как rb_raise рубина останавливает выполнение функции c вызов его?

Если Вы пишете рубиновый метод как функцию в C, который использует rb_raise, часть функции после вызова не будет выполняться, и программа остановится, и Вы будете думать это rb_raise б/У exit(). Но если Вы спасаете исключение в рубине, как:

begin
  method_that_raises_an_exception
rescue
end
puts 'You wil still get here.'

Код Ruby продолжится, но Ваша функция прекратит выполняться. Как делает rb_raise заставить это произойти?

6
задан Adrian 29 March 2010 в 03:00
поделиться