まつもと ゆきひろです

In message "[ruby-ext:01935] ruby_errinfo"
    on 01/10/05, Yoshiki Hayashi <yoshiki / xemacs.org> writes:

|Object によっては (例えば、svn_delta_edit_fns_t)、ruby -> C
|code ... -> ruby のように呼びだされるので、最後の ruby の
|method を呼出す部分では、途中の Subversion による error 処理
|を実行させるため、rb_protect を使って exception を 
|Subversion の error に変換しています。このときに、Subversion
|binding を使って書いた ruby code の debug を容易にするために、
|ruby の exception の情報を Subversion の error に持たせたい
|のですが、extension moduleが ruby_errinfo の値を参照するのは 
|API 上許されているのでしょうか? 実際に行なっているのは、
|anException.to_s した結果を Subversion の error の文字列を保
|持する部分に与える、というものです。(ちなみに、Subversion の 
|error は call stack の一番上の C の binding で再び ruby の 
|exception に変換されます)。あるいは、他に何か extension
|module から exception object を取得するための方法があるので
|しょうか?

この説明だけから全容を理解する想像力は私には欠けているのです
が、

  * ruby_errinfoの値を参照するのは許されています。

  * anExcepton.to_sした結果だけだと他の情報(型とか)が保存さ
    れない可能性がありますが、それが問題になることはありえる
    かも。

くらいは言えますね。

                                まつもと ゆきひろ /:|)