5

構造異常類位置的常見或最佳做法是什麼?其中要放置例外的名稱空間/包

比方說,你有(訂單模型和DAO)軟件包/命名空間myproject.person(對人的模型和DAO)和myproject.order的例外PersonExceptionOrderException。我是否應該將例外情況列入相應的軟件包或單獨的軟件包中(例如myproject.exceptions)?

第一種方法似乎更合理的(因爲它是由功能排序)。但是問題出現在哪裏,你應該把與兩者有關的例外都列出來?例如一個ConstraintViolationException

感謝

回答

8

我把它們放在同一個命名空間中的相應類。對於更一般的異常類型,您應該嘗試將它們放在覆蓋使用它們的類的最具體的名稱空間中,因此ConstraintViolationException將放在myproject名稱空間中。

12

以我的經驗,最好把例外成該異常有意義的軟件包。我不會爲異常創建一個特殊的包 - 異常應該靠近使用它們的類。

+1

同意,創建文件夾例外並在那裏添加與它們相關的所有內容。 異常的命名也應該是可讀的和與之相關的對象,比如f.ex FieldMissingValueException – 2010-04-27 11:50:00

12

做什麼Java類庫。將異常放入與拋出它們的API類和接口相同的包中。

+0

這對我來說已經足夠好了。 – fastcodejava 2010-04-27 11:56:45

0

我剛在該項目命名空間中所有的異常(即的myproject)。如果您爲每個類創建一個文件,他們可以在項目視圖中佔用空間,所以我通常會調用文件(例外).cs以便它們出現在頂部,並將所有的模糊處理放在一個位置。

如果它是一個大的項目的話,一般休息的組件成不同namesspaces和每個命名空間會得到自己的一套異常,但我們談論過每組件100班。

1

如果例外只使用一類或functuionality組類放在靠近他們。如果Exception具有應用程序jr庫的通用含義,請將其放入其名稱空間中。 恕我直言

0

我有這個整體思路的問題是,異常一般應沿着什麼可以去錯線進行設計,如NullPointerException,而PersonException似乎是指參與任何災難沒有給正在展開的對象關於出錯的線索。 Person對象是否導致異常?這是因爲Person有內部邏輯問題,還是因爲糟糕的參數被提供給它的一個方法?或者是由於在數據庫中找不到人員而導致的例外情況?

,你是在兩種不同的心情有關涉及兩個對象僅僅是強化了我的顧慮例外的事實。我建議重新考慮你的異常(EntityNotFoundException,BadArgumentException,MinorCannotOrderPornException)的設計,並且希望你的困境的答案更爲明顯。

1

試想一下,每個組件都有自己的操作,和許多類型的異常(不只是PersonExceptionOrderException,但PersonInvalidDataExceptionPersonDataPersistException)。 例如,那些異常可能會實現一個BaseException,即記錄和發送電子郵件。

所以更實惠的方式(在我看來),是通過名稱空間將它們分開。

相關問題