class method に関してException.exception
、公式ドキュメント ( http://www.ruby-doc.org/core-2.0/Exception.html#method-c-exception ) は次のように述べています。
引数がない場合、または引数がレシーバーと同じ場合は、レシーバーを返します。それ以外の場合は、レシーバーと同じクラスの新しい例外オブジェクトを作成しますが、メッセージは string.to_str と同じです。
これは、同じ名前のインスタンス メソッドには当てはまりますが、クラス メソッドには当てはまりません。
ExampleError.exception
受信者を返しません:
class ExampleError < Exception; end
p ExampleError.class # => Class
p ExampleError.exception.class # => ExampleError