为什么 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
谁能帮我理解它的核心?
我从这里引用:
上图显示大多数子类扩展了一个称为 StandardError 的类。这些是典型的 Ruby 程序试图处理的“正常”异常。其他异常代表较低级别、更严重或不太可恢复的情况,普通的 Ruby 程序通常不会尝试处理它们。
希望这能回答你的问题。
当您没有明确给出类型时,默认行为的原因rescue StandardError
是您通常不想在程序中处理非标准错误,至少在没有明确提及它们的情况下不会。几个典型的非标准错误异常是:
LoadError
NotImplementedError
SyntaxError
通常,您想了解程序中缺少的脚本文件、代码中未实现的方法和语法错误,而不是在异常代码中意外处理/忽略它们。
您还可以(不推荐)使用替代语法捕获任何异常
rescue Exception => e