Unfortunately I don't read Swedish (and could find an online translation engine :). Anyway, I didn't see a tree there. There seem to be a couple of issues with you code. Note below. > server> expand -t2 ruby_exceptions.rb > parents = [] > ObjectSpace.each_object do |obj| > if obj.class == Class and obj.superclass == Exception To get Class objects you can use: ObjectSpace.each_object(Class) { |klass| ... } > #puts "class-derived-from-exc #{obj}" > parents << obj > end > end > #p parents > > result = {} > parents.each {|klass| result[klass.to_s] = [] } > > ObjectSpace.each_object do |obj| > parents.each do |cls| > if obj.class == Class and obj.superclass == cls > #puts "child of #{cls}: #{obj}" > result[cls.to_s] << obj.to_s > end > end > end > Unless I'm mistaken, in this way you only get two levels of indirection. You won't see stuff like: EOFError -> IOError -> StandardError -> Exception. Your loop stops at IOError.