2

为什么 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

谁能帮我理解它的核心?

4

2 回答 2

2

我从这里引用:

上图显示大多数子类扩展了一个称为 StandardError 的类。这些是典型的 Ruby 程序试图处理的“正常”异常。其他异常代表较低级别、更严重或不太可恢复的情况,普通的 Ruby 程序通常不会尝试处理它们。

希望这能回答你的问题。

于 2013-02-09T09:23:11.703 回答
2

当您没有明确给出类型时,默认行为的原因rescue StandardError是您通常不想在程序中处理非标准错误,至少在没有明确提及它们的情况下不会。几个典型的非标准错误异常是:

LoadError
NotImplementedError
SyntaxError

通常,您想了解程序中缺少的脚本文件、代码中未实现的方法和语法错误,而不是在异常代码中意外处理/忽略它们。

您还可以(不推荐)使用替代语法捕获任何异常

rescue Exception => e  
于 2013-02-09T09:28:12.227 回答