【问题标题】:Using the right exception subclass in ruby在 ruby​​ 中使用正确的异常子类
【发布时间】:2009-03-30 22:52:55
【问题描述】:

我可以访问 ruby​​ 的异常层次结构(在镐和蜂鸟中都提到过),但我不确定使用哪个异常,因为我没有找到任何关于每个术语含义的信息。

使用正确的异常类重要吗?

【问题讨论】:

标签: ruby exception


【解决方案1】:

创建自己的异常时很重要。一个重要的警告是,从 Exception 而不是 StandardError (常见错误)继承的异常将不会被救援(没有任何参数)捕获。

【讨论】:

  • 这意味着您创建的任何异常类都应该始终从 StandardError 继承,而不是直接从 Exception 继承。我想你可以让这更清楚一点......
【解决方案2】:

“视情况而定”。

Ruby 的主要问题之一是缺乏良好的规范。不过,以前情况更糟。

这主要是风格问题:如果您的错误可以使用内置异常类之一很好地描述,请使用它。如果您认为子类有意义,请使用它。

否则,您可以考虑关注this lead from a C++ coding standard

创建非常复杂的异常 等级制度是浪费时间。没有人 关怀的结束,所有的努力都过去了 浪费。相反,创建一个 每个库或命名空间的异常和 有例外的原因 指明类型的异常 例外。

例如,对于您的操作系统封装 图书馆,做一个例外称为 OsencapException。

【讨论】:

  • 我建议不要为每个库创建一个异常,而是为要捕获的每个条件创建一个异常。您可以默认使用 RuntimeError,当您检测到您考虑解析救援块中的错误消息时,创建一个新类。
【解决方案3】:

没有。

或者更确切地说,如果它对你无关紧要,通常对其他人也无关紧要。如果你正在编写一个库,你应该使用你的库的用户会理解的东西,但仅此而已。

【讨论】:

    猜你喜欢
    • 2012-05-07
    • 1970-01-01
    • 2014-08-08
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    • 2017-01-30
    • 2013-10-21
    相关资源
    最近更新 更多