遺留錯誤處理傾向於遵循所有函數根據成功/失敗返回代碼的方法。你會檢查這段代碼並適當地處理(如果有錯誤)。爲什麼拋出異常而不是返回錯誤代碼更好?
但是,現代編程語言遵循異常模型,如果發生某些異常發生無法正常處理的異常,則會拋出異常 - 這會一直處於冒泡狀態,直到處理完爲止。
我的問題是爲什麼我們要移向例外模型?這背後的原因是什麼?爲什麼它更好?
解釋/鏈接將不勝感激。
遺留錯誤處理傾向於遵循所有函數根據成功/失敗返回代碼的方法。你會檢查這段代碼並適當地處理(如果有錯誤)。爲什麼拋出異常而不是返回錯誤代碼更好?
但是,現代編程語言遵循異常模型,如果發生某些異常發生無法正常處理的異常,則會拋出異常 - 這會一直處於冒泡狀態,直到處理完爲止。
我的問題是爲什麼我們要移向例外模型?這背後的原因是什麼?爲什麼它更好?
解釋/鏈接將不勝感激。
我在寫的長度大約是:Exceptions vs. status returns,但簡要地說:
爲了擴大最後一點:如果您忘記做狀態回報應該做的事情,您會忽略錯誤。如果您忘記了執行例外應該做的事情,那麼異常會冒泡到軟件的外層,從而變得可見。
這裏有幾個原因
如果狀態碼錶示函數的立即調用代碼準備處理的情況,那麼狀態碼通常優於例外狀態碼。狀態碼的問題是,如果直接調用代碼不處理它們,那麼可能什麼都不會。如果代碼拋出一個異常並且直接調用代碼沒有準備好處理它,那麼這個異常就會傳播到至少聲稱如此準備好的代碼。
你沒有離開你的列表使用異常的事實允許try/catch(MyCustomException ex),這樣你/(其他開發人員)可以添加try/catches,只會捕獲新類型的異常創建。 – 2011-01-12 16:21:55