关于类方法 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