我有一個非常簡單的工廠方法,它根據傳遞給它的一些值和條件創建模型實例。工廠方法 - 拋出什麼異常
什麼我不確定是做什麼如果工廠不能創建一個基於它receieves的配置模型實例。
第一個問題是,它應該返回false還是null?還是應該拋出異常?
如果它應該拋出一個異常應該是什麼異常。林在PHP在這裏工作(PHP例外列表http://php.net/manual/en/spl.exceptions.php)
我有一個非常簡單的工廠方法,它根據傳遞給它的一些值和條件創建模型實例。工廠方法 - 拋出什麼異常
什麼我不確定是做什麼如果工廠不能創建一個基於它receieves的配置模型實例。
第一個問題是,它應該返回false還是null?還是應該拋出異常?
如果它應該拋出一個異常應該是什麼異常。林在PHP在這裏工作(PHP例外列表http://php.net/manual/en/spl.exceptions.php)
你是誰可以回答這個問題的唯一的人。應該發生什麼不是在任何地方定義。
如果你問我,我寧願拋出一個異常,如果你願意,可以叫它YourFactory_ClassNotFoundException
。這將使調用代碼看起來更直接,因爲它不需要測試返回值。
據我所知,因爲我知道有在PHP核心函數和類這個以下共識:
false
應由遇到一個錯誤,並且不拋出異常的方法被退回。 (並且沒有布爾返回值,如is_file()
)。預計這些方法將設置errno
和errmsg
,以使用戶有機會獲取錯誤消息。
在這種情況下,一些較新的PHP類將拋出Exception。我更喜歡庫代碼的例外。如果它是一個沒有return語句無效方法
null
返回。這可能是有條件的
我知道,在一定程度上,你是正確的。但是,對於這種情況如何被認爲是最好的,必須有一些共識。感謝您的建議有關的例外 - IM thinkint那也最好在這一點 – 2013-04-25 16:20:32
有無寫了一封關於這幾行。 – hek2mgl 2013-04-25 16:28:58
拋出'InvalidArgumentException'將是我的建議 – 2013-04-25 16:17:15