【问题标题】:Ruby Exception or Error?Ruby 异常还是错误?
【发布时间】:2011-02-28 11:21:35
【问题描述】:

我注意到,在 Ruby 异常层次结构中,有诸如 ArgumentError 之类的“错误”,也有诸如 SignalException 之类的“异常”。命名异常有一定的做法吗?提前谢谢,嗯。

【问题讨论】:

  • stackoverflow.com/questions/912334/… 很好地描述了异常和错误之间的区别,尽管是针对 ruby​​ 以外的语言。
  • 谢谢,这让事情有点清楚了!
  • @AndrewGrimm 我认为对于 Ruby 的引用具有误导性。 Ruby 的错误/异常层次结构设计为表示需要处理的情况的类极有可能是 StandardError 或 RuntimeError 的子类,并且应该在其名称中包含Error

标签: ruby exception class hierarchy


【解决方案1】:

the list of Ruby exceptionsSignalException是唯一一个叫*Exception的;其他一切都是XXXErrorSystemExitfatal 除外)。如果有的话,惯例是将您的异常命名为FooError。我很难找到为什么 SignalException 没有被命名为 SignalError 的任何具体原因。

【讨论】:

  • 我会支持这一点。另一个问题,既然我们应该拯救的一切都是从StandardError继承的,那么使用rescue StandardError => error而不是rescue StandardError => exception是否有意义?我一直使用exception,但这个答案现在让我暂停了。
  • 是的,我认为将其称为error有意义。
【解决方案2】:

约定是Module::#{Type}Error 用于您的应用程序引起的任何事情(例如http://weblog.jamisbuck.org/2007/3/7/raising-the-right-exception)。 Ruby 中的异常处理与 Java 中的异常处理方式不同,因为异常模型在语言级别上有所不同。

据我所知,对于 C/FFI/JNA 扩展,这些约定的遵守要宽松一些。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-11
    • 1970-01-01
    • 2011-04-21
    • 1970-01-01
    相关资源
    最近更新 更多