Размещать исключения в своем собственном подпакете? - PullRequest
3 голосов
/ 03 марта 2010

В текущем пакете, над которым я работаю для проекта, у меня есть около 13 различных пользовательских исключений. Является ли хорошей идеей поместить их в свой собственный подпакет под пакетом, в котором есть все классы, которые будут использовать эти исключения?

Например:

com.company.project.core

содержит группу классов, которые могут выдавать некоторые пользовательские исключения, которые затем помещаются в

com.company.project.core.exception

Единственный недостаток, который я сейчас вижу, заключается в том, что у меня есть еще несколько импортов для классов, использующих исключения.

Ответы [ 4 ]

6 голосов
/ 03 марта 2010

Я не думаю, что исключения должны входить в другой пакет, так как они связаны с другими классами в вашем проекте. Если в пакете слишком много классов, вам следует разбить этот пакет, но я бы предпочел разбить его по функциональным критериям.

В любом случае, с таким количеством классов исключений я бы назвал базовый класс исключений, который может быть выдан вместо нескольких специализированных исключений. Что-то вроде MyProjectException.

2 голосов
/ 03 марта 2010

Да, пакет исключений является полезной идеей, и использование любой респектабельной IDE позволит избежать проблемы, связанной с импортом в любом случае.

Гораздо более сложный вопрос для большинства программистов: использовать ли RuntimeExceptions или проверенные исключения для своей собственной иерархии исключений.

1 голос
/ 03 марта 2010

Это немного субъективный вопрос, но я не вижу необходимости в отдельном пакете. Пользовательские исключения связаны с классами в том же пакете, поэтому их можно хранить в одном пакете.

Я не могу вспомнить ни одного примера API, который я использую, где пользовательские исключения находятся в их собственном подпакете. Конечно, JDK нет.

0 голосов
/ 03 марта 2010

Учитывая количество определяемых вами исключений, я думаю, что использование подпакета является хорошей идеей. Это будет держать ваш основной пакет аккуратнее. Из структуры пакета core.exceptions ясно видно, к чему относятся классы исключений, поэтому я не согласен с комментарием Мнемента.

...