けいじゅ@今はフリー(^^;;;です. 

In [ruby-list :03222 ] the message: "[ruby-list:3222] Re: Matrix ", on
Jul/01 18:45(+0200) matz / caelum.co.jp (Yukihiro Matsumoto) writes:

>そうです.
>|e2mmap.rbの当該部分を以下のように変えます.

むむ?

>うーん,

>        def fail(err, *rest)
>          begin
>            super(err, sprintf(E2MM_ErrorMSG[err], *rest))
>          rescue
>            $@.shift  # failを削るならshift
>            super()
>          end
>        end
>
>ではいけないんですかね(superのうしろの()が大事).

げげ. super()ですかあ... 他だ単に, superとは動作が異なっていたんですね!!
それに, $@.shift も... 

>あるいは
>failを削るだけならもっと単純なのは
>
>        def fail(err, *rest)
>          $@ = caller(1)
>          $! = err.new(sprintf(E2MM_ErrorMSG[err], *rest))
>          super()
>        end
>
>ですかね.

こっちを採用しました. 上の2つのメソッドの動作は同じなんですよね??

>上のコードだと
>
>  1. 例外を(メッセージを書き換えた上で)発生させる
>  2. バックトレースを減らす
>
>の両方ができているようにみえるんですけど.

どうも失礼しました(__;;; 

__
.........................................石塚 圭樹@今はフリー(^^;;...
------->>また, アドレス変わりました!! e-mail: keiju / bc.mbn.or.jp <<---