所以,问题是在标题制作自定义异常的。
自带一点,为什么我们需要引入自定义异常类只有一个念头就是要通过与异常引发的额外信息。
任何其他原因?为什么需要
Q
为什么需要
0
A
回答
1
有几个原因,您可能希望创建自定义异常:
添加自定义逻辑的例外,以简化与异常本身的相互作用。
ActiveRecord::RecordInvalid
就是一个例子:消息是根据实际的记录错误构建的,并且对记录本身的引用存储在异常中。微分误差,提高错误处理。拥有不同的错误类型可以让您专门解救某些类型的错误,而不是所有的错误。根据错误类型,您也可以拥有不同的救援块。
重新认识错误类型。这对于内部依赖于其他库的库非常重要。软件组成的一个很好的做法是,库中的采用B内部,任何错误B加薪应包装成一个错误,以确保A的用户不必直接处理B中。
通常,提供自定义错误会增强错误处理体验。了解更多关于错误的好资源是Avdi的书Exceptional Ruby。强烈推荐。
1
为了避免口袋妖怪异常处理(得”一网打尽)反模式,这是更好地提高自己的异常类型。
当使用库,例如,你应该得到有意义的错误类型 - 例如AuthorizationError
或TimeOutError
- 它可以让程序员按类型处理异常,而不是相匹配的错误信息或添加的不真正属于数字代码笨重的系统采用面向对象的语言。
相关问题
- 1. 为什么需要“{} \”?
- 2. 为什么需要copy_to/from_user?
- 3. 为什么Grails需要Xerces?
- 4. 为什么我需要“&”?
- 5. 为什么需要Server.HtmlEncode?
- 6. 为什么需要$ = jQuery
- 7. 为什么//需要的/
- 8. 为什么这需要malloc'd?
- 9. 为什么RVM需要YAML?
- 10. 为什么mybatis需要@Param?
- 11. 为什么需要DevKit
- 12. 为什么HttpClient需要httpasyncclient?
- 13. 为什么需要NotificationCompat?
- 14. 为什么需要session_ destroy()?
- 15. 为什么需要光标?
- 16. 为什么需要isLargeArc?
- 17. 为什么PayPal需要DoExpressCheckoutPayment?
- 18. 为什么android需要jvm
- 19. 为什么initWithCoder需要self.property?
- 20. 为什么Hbase需要WAL?
- 21. 为什么scanf需要&?
- 22. 为什么Apache需要SSLCertificateKeyFile?
- 23. 为什么active_support需要sinatra
- 24. 为什么需要“bear_moved”?
- 25. 为什么PhotoCamera需要VideoBrush?
- 26. 为什么需要线程
- 27. 为什么BizTalk需要MSDTC?
- 28. 为什么需要StaticResource?
- 29. 为什么需要解析?
- 30. 为什么WPF需要AutomationProperties
这不是Ruby,更不用说具体的Rails了,应该可以在http://programmers.stackexchange.com上更好地问一下。 –