Если вы пишете метод ruby как функцию в C, которая использует rb_raise
, часть функции после вызова не будет освобождена, и программа остановится, и вы будете думать, что rb_raise
использовал exit()
. Но если вы спасете исключение в ruby, например:
begin
method_that_raises_an_exception
rescue
end
puts 'You wil still get here.'
Рубиновый код будет продолжаться, но ваша функция перестанет работать. Как rb_raise
делает это возможным?