所以,問題是在標題製作自定義異常的。
自帶一點,爲什麼我們需要引入自定義異常類只有一個念頭就是要通過與異常引發的額外信息。
任何其他原因?爲什麼需要
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上更好地問一下。 –