2016-07-16 129 views
0

所以,问题是在标题制作自定义异常的。
自带一点,为什么我们需要引入自定义异常类只有一个念头就是要通过与异常引发的额外信息。
任何其他原因?为什么需要

+1

这不是Ruby,更不用说具体的Rails了,应该可以在http://programmers.stackexchange.com上更好地问一下。 –

回答

1

有几个原因,您可能希望创建自定义异常:

  • 添加自定义逻辑的例外,以简化与异常本身的相互作用。 ActiveRecord::RecordInvalid就是一个例子:消息是根据实际的记录错误构建的,并且对记录本身的引用存储在异常中。

  • 微分误差,提高错误处理。拥有不同的错误类型可以让您专门解救某些类型的错误,而不是所有的错误。根据错误类型,您也可以拥有不同的救援块。

  • 重新认识错误类型。这对于内部依赖于其他库的库非常重要。软件组成的一个很好的做法是,库中的采用B内部,任何错误B加薪应包装成一个错误,以确保A的用户不必直接处理B中。

通常,提供自定义错误会增强错误处理体验。了解更多关于错误的好资源是Avdi的书Exceptional Ruby。强烈推荐。

1

为了避免口袋妖怪异常处理(得”一网打尽)反模式,这是更好地提高自己的异常类型。

当使用库,例如​​,你应该得到有意义的错误类型 - 例如AuthorizationErrorTimeOutError - 它可以让程序员按类型处理异常,而不是相匹配的错误信息或添加的不真正属于数字代码笨重的系统采用面向对象的语言。