Ruby 为什么默认情况下,`rescue`不能捕获除`StandardError`以外的异常类?

Ruby 为什么默认情况下,`rescue`不能捕获除`StandardError`以外的异常类?,ruby,exception,Ruby,Exception,为什么Ruby被设计成只通过rescue隐式处理StandardError异常?对于其他例外情况,我们为什么需要将它们明确地与rescue放在一起 有人能帮我理解它的核心吗?我引述: 上图显示了大多数子类都扩展了一个已知的类 作为标准错误。这些是典型Ruby的正常异常 程序试图处理。其他例外代表较低级别, 更严重或可恢复性较差的情况,以及正常的Ruby程序 通常不要试图处理它们 希望这能回答你的问题。我引述: 上图显示了大多数子类都扩展了一个已知的类 作为标准错误。这些是典型Ruby的正常异常

为什么Ruby被设计成只通过rescue隐式处理StandardError异常?对于其他例外情况,我们为什么需要将它们明确地与rescue放在一起

有人能帮我理解它的核心吗?

我引述:

上图显示了大多数子类都扩展了一个已知的类 作为标准错误。这些是典型Ruby的正常异常 程序试图处理。其他例外代表较低级别, 更严重或可恢复性较差的情况,以及正常的Ruby程序 通常不要试图处理它们

希望这能回答你的问题。

我引述:

上图显示了大多数子类都扩展了一个已知的类 作为标准错误。这些是典型Ruby的正常异常 程序试图处理。其他例外代表较低级别, 更严重或可恢复性较差的情况,以及正常的Ruby程序 通常不要试图处理它们


希望这能回答您的问题。

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

LoadError
NotImplementedError
SyntaxError
通常,您希望了解程序中缺少的脚本文件、代码中未实现的方法和语法错误,并且不要在异常代码中意外处理/忽略它们

您也不能使用备用语法捕获任何异常

rescue Exception => e  

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

LoadError
NotImplementedError
SyntaxError
通常,您希望了解程序中缺少的脚本文件、代码中未实现的方法和语法错误,并且不要在异常代码中意外处理/忽略它们

您也不能使用备用语法捕获任何异常

rescue Exception => e  

对我同意你的看法。答案太实用了,正如我所期望的那样,有点不同,更专业我仍然对此感到高兴+祝你好运,是的!我同意你的看法。答案太实用了,正如我所期望的那样,有点不同,更专业我仍然对此感到高兴+对你来说是1。似乎Ruby的异常是这样设计的,没有什么技术性。好吧,不管怎样,对你来说也是+1向下投票人:投票没有帮助,但不留下关于为什么没有帮助的评论。似乎Ruby的异常被设计成这种方式,没有太多的技术性。好吧,不管怎样,也给你+1Downvoter:投票没有帮助,但不留下关于为什么也没有帮助的评论。