在ruby中使用正确的exception子类

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

使用正确的exception类是否重要?

“这取决于”。

Ruby的一个主要问题是缺乏良好的规范。 但过去常常会更糟。

这主要是样式问题:如果您的错误可以使用其中一个内置exception类进行描述,请使用它。 如果您认为子类有意义,请使用它。

否则,您可以考虑遵循C ++编码标准的这一主导 :

创建非常精细的exception层次结构是浪费时间。 没有人关心,所有的努力都浪费了。 相反,为每个库或命名空间创建一个exception,并在该exception中有一个exception原因来指示exception的类型。

例如,对于您的操作系统封装库,请进行名为OsencapException的exception。

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

没有。

或者更确切地说,如果它对您无关紧要,通常对其他任何人都无关紧要。 如果您正在编写库,则应该使用库中用户可以理解的内容,但这就是它。