SigScheme開発録 (30)

エラー処理

エラー処理周りについて井上さんが書かれているので、僕の考えも。初期構想ではSigScm_Errorでformat stringを自前で解析してScmObjも呼出側から簡単に利用できるようにしたいと思っていた。

SigScm_Error("func : string required but got %O", obj);

#define WRONGTYPE_ERROR(funcname, validtype, wrongobj)
    (SigScm_Error("%s : %s required but got %O", funcname, validtype, wrongobj))

しかし、これをする為には自前でformat stringを解析しなければならない。呼出側からすればエレガントだけれど、呼び出される側としては最悪。結局どっちが肥大化するかという問題な気がする。今の形(Scm_ErrorObj)になった理由は、まず「作業が楽だった」のと後は「ScmObjを複数表示したいというニーズがあまりなさそうだったから、1つ決め打ちでいいや」と思ったからだ。

File 内の区分け

同じく井上さんのエントリへの返答。「「C 言語的に何をしているか」ではなくて「何を書いてるか」でわけた方がよい」というのは最もだと思うので、気づいた所から直して行きましょう。

バックトレース

trace_frameに環境を持たせることで、バックトレースを吐くときに変数の内容を表示する機能を付けてみた@r1680。