From: Kazuhiro Yoshida Date: 1999-11-17T04:20:42+09:00 Subject: [ruby-dev:8330] Re: Exception handling もりきゅうです。 汎用にするとこんな感じでしょうか。 -- uso.rb # ext lib module Handler HANDLE = {} private def handle_repair proc = HANDLE[$!.type] proc.call $! if proc $! end public def handle_method(method) eval <<-E def handy_#{method} begin #{method} rescue handle_repair end end E end def handle(error, proc=nil) HANDLE[error] = proc || lambda end end class File extend Handler handle_method 'open(path, mode)' end #user File::handle(Errno::ENOENT) { |error| p '失敗しちゃった' error } p File::handy_open 'usopyon', 'r' -- ---- Kazuhiro Yoshida moriq.kazuhiro@nifty.ne.jp