From: matz@... (Yukihiro Matsumoto) Date: 1998-04-02T13:28:31+09:00 Subject: [ruby-list:7297] Re: Exception in ruby まつもと ゆきひろです In message "[ruby-list:7292] Exception in ruby" on 98/04/01, TAKAHASHI Masayoshi writes: |高橋です。 |要するに、「例外を起こすのに、複数の引数を渡すにはどうすればいい |のか」、が知りたいのでした。どうすればいいのでしょうか? うーん,rubyの例外モデルはもっと単純なんですよねえ. * 例外は文字列のサブクラスである メッセージと型しか直接には渡せない さらに悪いことに例外はインスタンス変数を持てない * 例外の位置は $@ に格納される. $@を代入することにより,例外の発生位置を調整できる というものです.ですから,この場合は columnは無視 lineは$@に任せる sysIDに対応するのはXmlExceptionのサブクラスを作ることで対 応する.またはメッセージに埋め込む というのでどうでしょう.なお $@ を調整して例外を発生させるに ためには $@ = caller(1) # あるいは適当な配列を代入 $! = XmlException.new("message") raise のような使い方をします(raiseの引数を指定すると$@を上書きして しまう). まつもと ゆきひろ /:|)