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
は正しいソースなのでしょうか?