RubyのExceptionのラッパーでinitializeのsuperの引数に何故Exceptionオブジェクトを渡せるのでしょうか?
RubyのExceptionをラッパーしようとして下記を見つけました
https://gist.github.com/rks/2577339#gistcomment-1313963
引用
class ClientError < StandardError
  def initialize(e = nil)
    super e
    # Preserve the original exception's data if provided
    if e && e.is_a?(Exception)
      set_backtrace e.backtrace
      message.prepend "#{e.class}: "
    end
  end
end
http://ruby-doc.org/core-2.2.0/Exception.html
を確認したところ
引用:
new(msg = nil) → exception click to toggle source
Construct a new Exception object, optionally passing in a message.
となっており、厳密な型まで記載されてはいないのですが、文字列を期待しているように思います。
ところが上記引用ソースを実際に試したところ問題なく動いたように思います。
super eは正しいソースなのでしょうか?