If you write a ruby method as a function in C that uses rb_raise, the part of the function after the call will not get excecuted and the program will stop and you will think that rb_raise used exit(). But if you rescue the exception in ruby, like:
begin
method_that_raises_an_exception
rescue
end
puts 'You wil still get here.'
The ruby code will go on, but your function will stop excecuting. How does rb_raise make this happen?
Presumably it uses setjmp (before the method is called) and longjmp (in rb_raise).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With