如果您拥有自己的库,我已经阅读了一个标记您自己的例外的提示:
module AcmeHttp
module Error; end
end
begin
begin
raise IOError, "Some IO error"
rescue Exception => error
error.extend(AcmeHttp::Error)
raise
end
rescue AcmeHttp::Error => error
puts "Rescued AcmeHttp::Error: #{error}"
end
我不确定error.extend(AcmeHttp::Error)
是如何工作的,以及你以后如何使用它进行实际救援。另外,是否有更优雅的方法来标记您自己的库中的异常?
答案 0 :(得分:0)
Object#extend
将一个或多个模块的实例方法添加到接收者对象中。
因此,当您执行error.extend(AcmeHttp::Error)
时,实际上是将AcmeHttp::Error
模块的实例方法添加到error
这是一个例外(实际上是一个类对象)。