Должны ли исключения быть помещены в отдельный пакет? - PullRequest
28 голосов
/ 05 мая 2009

Я беру проект, где все исключения были помещены в отдельный пакет com.myco.myproj.exceptions.

Это хорошая практика?

Ответы [ 3 ]

48 голосов
/ 05 мая 2009

Я ожидаю, что исключения для пакета существуют в этом пакете. например,

com.oopsconsultancy.models.pricing

будет содержать модели ценообразования и связанные с ними исключения. Все остальное кажется немного нелогичным.

41 голосов
/ 05 мая 2009

Это плохая практика.

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

0 голосов
/ 20 мая 2018

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

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

например:

// Below should be in a single package
interface Draggable{}
abstract class Graphic{}
class Circle extends Graphic implements Draggable{}
class Box extends Graphic implements Draggable{}
final class GraphicValidator {// utility  class}
// don't put below in a separate 'exceptions' package, 
// who's gonna use it anyway other than the components in this package ?
class GraphicRenderingException extends Exception{}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...