一千萬個為什麽

搜索

PHP社區應該開始使用更具描述性的異常嗎?

我經常使用Zend Framework,我只是看了一眼Kohana,這讓我覺得奇怪,這是這些框架中的一個典型場景:

throw Some_Components_Exception( 'invalid argument' );

在哪裏我相信這不會更有用:

throw Some_Components_InvalidArgumentException( 'whatever discription' );

因為它更容易捕獲。

我懷疑,但立即承認它有偏見,以前的做法在PHP社區很常見。我們PHP社區是否應該開始更多地使用這些描述性類型的預期?

最佳答案

是的,我建議使用SPL提供的Exception子類型。它允許調用代碼(在框架中或在您的應用程序中)以不同方式處理不同類型的異常。

DomainException 可能表示無效的用戶輸入,您應該向用戶報告並讓他們有機會重新輸入數據。 BadMethodCallException 可能表示您的代碼存在缺陷,您應該記錄它並以不同的方式處理它。

但是這些不同的異常情況與拋出異常的類或組件無關。無論是在MVC組件還是數據庫訪問層中,都應該類似地處理 BadMethodCallException

通過1.0發布,我是Zend Framework的項目負責人。我想重新組織異常層次結構,我認為這是一個任意的決定(在我加入項目之前)為每個組件使用一個例外。這沒有意義。

不幸的是,重新架構異常並不像將產品推向1.0版本的裏程碑那麽重要。我必須按照Zend為項目設置的時間表遵循優先級,並且為此,實際上必須推遲完成功能完整版本所不必要的所有操作。

轉載註明原文: PHP社區應該開始使用更具描述性的異常嗎?