我已經開源一個math library for PHP,定義其own hierarchy of exceptions:我應該在庫中拋出PHP 7的錯誤類嗎?
現在PHP 7已經落地,我意識到一些例外覺得有點多餘的推出了全新的Error
類:
讓我們忘了PHP 5一會兒,假設該庫僅以PHP 7爲目標。
- 我應該丟掉
ArithmeticError
並放下我的ArithmeticException
? - 同樣,我應該扔
DivisionByZeroError
並下降DivisionByZeroException
? - 應該
RoundingNecessaryException
和NumberFormatException
延伸ArithmeticError
? - 在這種情況下,他們應該被稱爲
RoundingNecessaryError
和NumberFormatError
?
乍一看,重新聲明在語言中具有本機等價物的異常似乎很奇怪。
與此同時,雖然沒有什麼可以阻止用戶級代碼拋出Error
,我覺得設計這些類通過PHP本身被拋出,而用戶空間的庫最好還是扔Exception
而不是Error
。
在這個問題上有共識嗎?
致投票結束的人:基於「對這個問題的答案投票結束問題將傾向於幾乎完全基於意見,而不是事實,參考或具體專業知識」。是適得其反的,有點「射擊使者」。即使我們決定以意見爲基礎的答案(什麼樣的答案*不是*)是壞事,那麼譴責答案*,而不是問題。試着去合作,呃?根據其整體價值判斷一個情況,而不是規則書中的誡命。如果你沒有任何有用的補充,只需慢跑即可。 –
TBH,我知道這個問題將成爲「主要是基於觀點的」強迫選民的目標。我盡力爭取達成共識,而不是意見。也許創建[Throwable RFC](https://wiki.php.net/rfc/throwable-interface)的人寫了關於這個主題的東西。也許這是一個半官方的答案。誰知道。無論如何我需要問! – Benjamin
PHP錯誤異常是在發生*程序員*錯誤的情況下引發的。拋出的任何錯誤都應該無可否認地鏈接到代碼中的實際錯誤。如果您使用Error或其子類匹配此約束,則可以在您的代碼中使用它們。 (這也意味着你不應該捕獲這些異常,除了在你的頂級處理程序或非常不尋常的情況下。如果你的異常應該被捕獲,那麼Error是不適合你的。) – NikiC