まつもと ゆきひろです

とりあえずポインタだけ。

In message "[ruby-list:20219] catching exceptions in rb_eval_string()"
    on 00/01/14, OZAWA Sakuro <crouton / duelists.org> writes:

|ユーザーから与えられた文字列をrb_eval_stringに与えて評価しようとしている
|のですが、中で発生する例外は、どうやって捕捉すればいいのでしょうか?
|rb_eval_stringに渡す前に、与えられた文字列をbegin〜rescue〜endで囲んでお
|いて、エラー情報オブジェクトをVALUEとして返させればいいのかな?

捕捉するのがStandardError例外だけであるなら、

  rb_rescue(b_proc, data1, r_proc, data2)

が使えます。あらゆる大域脱出を捕まえたいなら

  rb_eval_string_protect(str, state)
  rb_protect(proc, state)

が使えます。