From: Koji Arai Date: 2002-04-10T05:21:54+09:00 Subject: [ruby-dev:16818] Re: Ruby Shim 新井です。 In message "[ruby-dev:16799] Re: Ruby Shim" on 09 Apr 2002 06:43:37 +0900, "Akinori MUSHA" wrote: > 要求はしません。中途のものや実装のアイデアだけでも貴重ですので、 > 気軽に寄せてもらえればと思います。 では、アイデアというかなんというかボツネタです。 NameError を StandardError のサブクラスに見せかけてみようと 思いました。(最後に添付)。 しかし、version 1.6 では、rb_exc_new() が、rb_obj_alloc() を 直接呼んでて NameError.new が呼ばれないために失敗しました。 (ver 1.7 なら大丈夫なんですが)。 これで、1.6 のソース修正に走るのは反則ですよね(^^; class NameError @@name_error = Class.new(StandardError) def self.new(*arg) @@name_error.exception(*arg) end def self.exception(*arg) @@name_error.exception(*arg) end def exception(*arg) ex = @@name_error.new ex.set_backtrace = self.backtrace ex.exception(*arg) end def self.__name_error @@name_error end end NameError = NameError.__name_error if $0 == __FILE__ begin hogehoge rescue p $! p $!.type == NameError end end -- 新井康司 (Koji Arai)