Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ruby';s rb_raise是否停止调用它的c函数的执行?_C_Ruby_Raise - Fatal编程技术网

ruby';s rb_raise是否停止调用它的c函数的执行?

ruby';s rb_raise是否停止调用它的c函数的执行?,c,ruby,raise,C,Ruby,Raise,如果在C中编写一个ruby方法作为一个使用rb\u raise的函数,调用后的函数部分将不会被删除,程序将停止,您将认为rb\u raise已使用exit()。但是如果您在ruby中拯救了异常,比如: begin method_that_raises_an_exception rescue end puts 'You wil still get here.' ruby代码将继续运行,但您的函数将停止执行。rb_-raise是如何实现的?大概它使用了setjmp(在调用方法之前)和longj

如果在C中编写一个ruby方法作为一个使用
rb\u raise
的函数,调用后的函数部分将不会被删除,程序将停止,您将认为
rb\u raise
已使用
exit()
。但是如果您在ruby中拯救了异常,比如:

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

ruby代码将继续运行,但您的函数将停止执行。
rb_-raise
是如何实现的?

大概它使用了
setjmp
(在调用方法之前)和
longjmp
(在
rb_-raise
中)