rubyのException
gold対策。
rubyのクラスを階層構造で表示 - rochefort's blog
簡単に解説すると、Treeってクラスに
Module.constantsで取得したクラス毎に
そのクラスと親のクラスを保有するTreeNodeDataクラスのインスタンスとして突っ込んで行って
to_sで階層化して出力するスクリプトです。
(あんまりきれいではない)
このスクリプトの実行部分を下記のようにすると
Exception以下のクラス一覧が取り出せます。
tree = Tree.new Module.constants.each do |elm| const = eval(elm.to_s) if const.respond_to?(:superclass) && const.ancestors.include?(Exception) if const == Exception tree << [const, nil] else tree << [const, const.superclass] end end end puts tree
結果
Exception NoMemoryError ScriptError LoadError NotImplementedError SyntaxError SecurityError SignalException Interrupt StandardError ArgumentError EncodingError FiberError IOError EOFError IndexError KeyError StopIteration LocalJumpError NameError NoMethodError RangeError FloatDomainError RegexpError RuntimeError StringScanner::Error SystemCallError ThreadError TypeError ZeroDivisionError SystemExit SystemStackError
たくさんあるのですが、重要なところ(出題されそうなところ)としては
下記ぐらいのようです。
Exception ScriptError SyntaxError SignalException StandardError ArgumentError NameError NoMethodError RuntimeError ZeroDivisionError SystemExit
個人的に理解していなかったのは、
NoMethodErrorがNameErrorのサブクラスというところ。