6

を使うC言語の関数としてrubyメソッドを書くとrb_raise、関数の呼び出し以降の部分が実行されずにプログラムが止まってしまい、 を使っていると思わrb_raiseexit()ます。しかし、Ruby で例外をレスキューすると、次のようになります。

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

ruby コードは続行されますが、関数の実行は停止します。これはどのようrb_raiseに実現しますか?

4

1 に答える 1

6

おそらく、setjmp(メソッドが呼び出される前に)およびlongjmp(でrb_raise)を使用します。

于 2010-03-29T07:54:20.747 に答える