2016-07-16 264 views
0

所以,問題是在標題製作自定義異常的。
自帶一點,爲什麼我們需要引入自定義異常類只有一個念頭就是要通過與異常引發的額外信息。
任何其他原因?爲什麼需要

+1

這不是Ruby,更不用說具體的Rails了,應該可以在http://programmers.stackexchange.com上更好地問一下。 –

回答

1

有幾個原因,您可能希望創建自定義異常:

  • 添加自定義邏輯的例外,以簡化與異常本身的相互作用。 ActiveRecord::RecordInvalid就是一個例子:消息是根據實際的記錄錯誤構建的,並且對記錄本身的引用存儲在異常中。

  • 微分誤差,提高錯誤處理。擁有不同的錯誤類型可以讓您專門解救某些類型的錯誤,而不是所有的錯誤。根據錯誤類型,您也可以擁有不同的救援塊。

  • 重新認識錯誤類型。這對於內部依賴於其他庫的庫非常重要。軟件組成的一個很好的做法是,庫中的採用B內部,任何錯誤B加薪應包裝成一個錯誤,以確保A的用戶不必直接處理B中。

通常,提供自定義錯誤會增強錯誤處理體驗。瞭解更多關於錯誤的好資源是Avdi的書Exceptional Ruby。強烈推薦。

1

爲了避免口袋妖怪異常處理(得」一網打盡)反模式,這是更好地提高自己的異常類型。

當使用庫,例如​​,你應該得到有意義的錯誤類型 - 例如AuthorizationErrorTimeOutError - 它可以讓程序員按類型處理異常,而不是相匹配的錯誤信息或添加的不真正屬於數字代碼笨重的系統採用面向對象的語言。