class Collector
class ContentNotFound < Exception
end
class DuplicateContent < Exception
end
end
begin
raise Collector::ContentNotFound.new
rescue
puts "catch"
end
当我运行脚本时,我没有收到“catch”消息,我看到错误:
lib/collector/exception.rb:10:in `<main>': Collector::ContentNotFound (Collector::ContentNotFound)
为什么呢?如果不在救援中输入他们的课程,我怎样才能抓住我的例外?
答案 0 :(得分:12)
如果您确实希望按原样捕获这些异常,请使用:
rescue Exception
裸rescue
个关键字仅捕获StandardError
的衍生物(有充分理由)。
但是,更好的解决方案是让您的自定义例外来自StandardError
。
有关为何如此的解释,请参阅PickAxe的this section。
答案 1 :(得分:3)
请参阅此帖子以获得解释:
基本上,你可以做到
class ContentNotFound < RuntimeError
end
捕获它而不必在rescue
语句中指定异常类。