木谷 洋
ryute****@mac*****
2005年 5月 21日 (土) 08:08:58 JST
木谷です。 いまObjective-Cの言語ブリッジを作成しています(ねるさ んのものとは別物です。構造体を使えたりします。もう少し完成度が上 がったら公開する予定です)。 そこで、GaucheからObjective-Cに向かって NSExceptionを投げるための関数があります。生のままこれを呼ぶと暴 走するので、Scheme界でGuard付きで呼び出すためのユー ティリティ(テスト用)として以下のような関数を書きまし た。 ScmObj with_guard(proc, args) { @try { ret = Scm_Apply(proc, args); // @throw e; } @catch(id e) { Scm_VMThrowException( e=>scm_e); /*NOTREACHED*/ } return ret; } ところがこの関数からエラーを受けとるとGaucheが暴走してしま います。stack traceが止まっているようなのでlongjmpが 入れ子になってるのがまずいと思うんですが、何か対処の方法はあるの でしょうか。 #ObjC側からscmを呼んでキャッチする場合は問題ないみ たいです。 一応bridge-invoker経由で使えば問題はないんですけど、それだ といちいちObjCクラスにメソッドを追加しなければならないのが 美しくない気がします。 -- 木谷 洋