为什么需要创建自定义Exceptions

时间:2016-07-16 12:19:05

标签: ruby-on-rails ruby

所以,问题在于标题 考虑到为什么我们需要引入自定义Exception类的唯一一个想法是通过异常提升传递其他信息 还有其他原因吗?

2 个答案:

答案 0 :(得分:1)

您可能希望创建自定义例外有几个原因:

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

  • 区分错误以改进错误处理。具有不同的错误类型允许您专门拯救某些类型的错误,而不是所有错误。您还可以根据错误类型使用不同的救援区块。

  • 重新提升类型错误。这对于内部依赖其他库的库非常重要。软件组合的一个好例子是库A在内部使用B,不管B引发的错误应该包含在A错误中,以确保A的用户不必直接处理B.

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

答案 1 :(得分:1)

为了避免Pokemon异常处理( Gotta'抓住所有)反模式,最好提出自己的异常类型。

例如,当使用库时,您应该获得有意义的错误类型 - 例如AuthorizationErrorTimeOutError - 它允许程序员按类型处理异常,而不是匹配错误消息或添加笨重的系统数字代码并不真正属于面向对象的语言。