2008年2月14日

[ruby-list:44631] Re: warningをエラー扱いする方法について、他

From: yoshimi <kazuya.yoshimi@xxxxx>
Subject: [ruby-list:44627] warningをエラー扱いする方法について、他
Date: Thu, 14 Feb 2008 02:40:04 +0900

るびきちです。

> 一つ目は、タイトルにある通り、
> warningが発生した場合、エラーにして実行できないように

> したいのですが、これはどの様にすればできますでしょうか

ソースを書き換えるしか無理だと思います。
ruby -wで実行するくらいしか思い付きません…

> もう一点は、無計画なrescueを禁止したいので
> rescue時に補足する例外クラスの指定を必須にしたいと思っています。
> ただこの場合、rescue修飾子まで使えなくなってしまったり、
> 最終的にまとめてキャッチしたい場合はどうしようと
> まだ方法もわからないのに、そんな心配をしてしまってます。
>
> なにか良い方法をご存知の方いらっしゃいませんでしょうか

evil.rbという身の毛もよだつ方法ならありますけど……。
evil.rbを使えばスーパークラスを変更できます…
StandardErrorな例外クラスしか無印rescueじゃ捕捉できません。それ基本。
だからStandardErrorな例外クラスをExceptionの直接のサブクラスにしてしまえば…
あな恐しや…自己責任で。

require 'rubygems'
require 'evil'

ArgumentError.superclass = Exception
IndexError.superclass = Exception
IOError.superclass = Exception
EOFError.superclass = Exception
LocalJumpError.superclass = Exception
NameError.superclass = Exception
NoMethodError.superclass = Exception
RangeError.superclass = Exception
FloatDomainError.superclass = Exception
RegexpError.superclass = Exception
RuntimeError.superclass = Exception
SecurityError.superclass = Exception
SystemCallError.superclass = Exception
SystemStackError.superclass = Exception
ThreadError.superclass = Exception
TypeError.superclass = Exception
ZeroDivisionError.superclass = Exception
StandardError.superclass = Exception

begin
raise "Now RuntimeError cannot be rescued without class!"
rescue
1
end
# ~> -:24: Now RuntimeError cannot be rescued without class! (RuntimeError)

--
rubikitch
Blog: http://d.hatena.ne.jp/rubikitch/
Site: http://www.rubyist.net/~rubikitch/

投稿者 xml-rpc : 2008年2月14日 03:45
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/69782
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。