Ruby on rails 为什么需要创建自定义异常

Ruby on rails 为什么需要创建自定义异常,ruby-on-rails,ruby,Ruby On Rails,Ruby,因此,问题就在标题中。 我们之所以需要引入自定义异常类,唯一想到的是通过异常引发传递附加信息。 还有其他原因吗 创建自定义异常有几个原因: 向异常添加自定义逻辑,以简化与异常本身的交互。例如:消息是根据实际记录错误生成的,对记录本身的引用存储在异常中 区分错误以改进错误处理。通过使用不同的错误类型,您可以只特定地挽救某些类型的错误,而不是所有的错误。根据错误类型,还可以使用不同的救援块 重新引发键入的错误。这对于内部依赖于其他库的库非常重要。软件组合的一个很好的实践是库A在内部使用B,无论B引

因此,问题就在标题中。
我们之所以需要引入自定义异常类,唯一想到的是通过异常引发传递附加信息。

还有其他原因吗

创建自定义异常有几个原因:

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

  • 区分错误以改进错误处理。通过使用不同的错误类型,您可以只特定地挽救某些类型的错误,而不是所有的错误。根据错误类型,还可以使用不同的救援块

  • 重新引发键入的错误。这对于内部依赖于其他库的库非常重要。软件组合的一个很好的实践是库A在内部使用B,无论B引发什么错误,都应该包装成A错误,以确保A的用户不必直接处理B


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

创建自定义异常有几个原因:

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

  • 区分错误以改进错误处理。通过使用不同的错误类型,您可以只特定地挽救某些类型的错误,而不是所有的错误。根据错误类型,还可以使用不同的救援块

  • 重新引发键入的错误。这对于内部依赖于其他库的库非常重要。软件组合的一个很好的实践是库A在内部使用B,无论B引发什么错误,都应该包装成A错误,以确保A的用户不必直接处理B


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

为了避免Pokemon异常处理(必须“全部捕获”)反模式,最好提出自己的异常类型


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

为了避免Pokemon异常处理(必须“全部捕获”)反模式,最好提出自己的异常类型


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

不是Ruby,更不特定于Rails,应该在中询问。这不是Ruby,更不特定于Rails,应该在中询问。