在ruby中使用正确的异常子类

And*_*imm 5 ruby exception

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

使用正确的异常类是否重要?

sri*_*ris 10

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

  • 这意味着您创建的任何Exception类应始终从StandardError继承,而不是直接从Exception继承.我想你可以让这一点更清楚...... (8认同)

Man*_*uel 8

"这取决于".

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

这主要是一个样式问题:如果你的错误可以用其中一个内置异常类很好地描述,那就使用它.如果您认为子类有意义,请使用它.

否则,您可以考虑从C++编码标准中遵循此主题:

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

例如,对于您的操作系统封装库,请创建一个名为OsencapException的异常.