【问题标题】:Alternative to "rescue Exception"“救援例外”的替代方案
【发布时间】:2013-09-06 22:53:31
【问题描述】:

我有时会遇到一些意外错误,例如超时错误、503 错误等。我什至不知道我可能会收到一些错误。我无法通过执行以下操作来解释所有这些:

rescue Timeout::Error => e

拯救Exception也是个糟糕的主意。

我可以使用什么替代方案?我希望我的代码在出现错误时拯救所有这些;如果没有错误,我需要避免它。我希望能够杀死我的脚本,但不跳过语法错误等。

【问题讨论】:

    标签: ruby exception rescue


    【解决方案1】:

    你可以抢救StandardError,也可以干脆抢救,都是一样的:

    rescue StandardError => e
    # or
    rescue => e
    

    您可以在下表中看到哪些异常是从 StandardError 中拯救出来的 - 请注意,它们是 Exception 的子集,理论上应该是可以捕获的错误。

    当然,您可以在错误的位置使用定义异常的 gem,但这不应该发生在开发良好的 gem 中。


    (来源:rubylearning.com

    我个人喜欢只拯救我知道如何处理的异常,除非是添加到日志/回溯系统中以便稍后查阅错误。如果是这样的话,我一般会解救StandardError

    【讨论】:

    • 啊,StandardError。这就说得通了。感谢您提供的图表,它有助于查看层次结构并确切知道我在拯救什么。
    • “我个人喜欢只拯救我知道如何处理的异常......”我的一位导师曾经说过“永远不要试图捕捉你不知道如何处理的异常。”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多