为什么Ruby设计为StandardError
隐式处理rescue
个异常?对于其他例外情况,我们为什么需要明确地使用rescue
?
begin
#codes here which may generates exceptions
rescue
#codes to handle some thing which really needed to be done when exceptions there
end
任何人都可以帮我理解它的核心吗?
答案 0 :(得分:2)
我引用here:
上面的图表显示大多数子类扩展了已知的类 作为StandardError。这些是典型Ruby的“正常”异常 程序试图处理。其他例外代表较低级别, 更严重或更不可恢复的条件,以及正常的Ruby程序 通常不会尝试处理它们。
希望这能回答你的问题。
答案 1 :(得分:2)
当您未明确指定类型时,默认行为rescue StandardError
的原因是您通常不希望在程序中处理非标准错误,至少在没有明确提及它们的情况下。一些典型的非StandardError异常是;
LoadError
NotImplementedError
SyntaxError
通常,您希望了解程序中缺少脚本文件,代码中未实现的方法和语法错误,并且不会意外处理它们/在异常代码中忽略它们。
您还可以(不推荐)使用备用语法
捕获任何异常rescue Exception => e