Ruby异常还是错误?

20
我注意到在Ruby的异常层次结构中,有"错误(errors)"例如ArgumentError和"异常(exceptions)"例如SignalException。是否有一定的惯例来命名异常?谢谢您提前的回答,ell。

1
https://dev59.com/xXNA5IYBdhLWcg3wjOve 这篇文章很好地描述了异常和错误的区别,尽管它是针对一种不同于Ruby的编程语言。 - Andrew Grimm
谢谢,这让事情更清楚了一些! - Ell
1
@AndrewGrimm 我认为这个参考在 Ruby 的情况下是误导性的。Ruby 的错误/异常层次结构被设计成表示需要处理的情况的类极有可能是 StandardError 或 RuntimeError 的子类,并且应该在它们的名称中包含“Error”。 - Keith Bennett
2个回答

13

查看Ruby异常列表,我们可以发现只有SignalException这个异常以*Exception的形式命名;其他所有异常都是以XXXError的形式命名(除了SystemExitfatal)。如果需要,惯例上应该把自定义的异常命名为FooError。但我找不到SignalException没有被命名为SignalError的具体原因。


2
我也同意这个观点。另外一个问题,既然我们应该拯救的所有内容都是从“StandardError”继承而来的,那么使用rescue StandardError => error而不是rescue StandardError => exception是否有意义?我一直使用exception,但现在这个答案让我停下来思考了。 - Joshua Pinter
是的,我认为把它称为“error”会有意义。 - Keith Bennett

5
约定的格式为Module::#{Type}Error,用于表示应用程序引起的任何问题(例如:http://weblog.jamisbuck.org/2007/3/7/raising-the-right-exception)。Ruby中的异常处理与Java不同,因为语言层面上的异常模型也不同。从我所看到的情况来看,对于C/FFI/JNA扩展,这些约定会更加宽松。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接