Должен ли каждый модуль (в многомодульном проекте Maven) иметь свое собственное исключение? - PullRequest
0 голосов
/ 30 октября 2018

У нас есть многомодульный проект Maven, в котором каждый модуль имеет свое собственное исключение. Например, tree-service-module будет иметь TreeServiceException, user-service-module будет иметь UserServiceException, а login-service-module будет LoginServiceException.

Каждый из этих трех модулей имеет основной класс Service: TreeService, UserService и LoginService. Каждый метод в TreeService выбрасывает TreeServiceException, каждый метод в UserService выбрасывает UserServiceException, а каждый метод в LoginService выдает LoginServiceException. Мы обрабатываем эти исключения, регистрируя их и выбрасывая их в иерархию вызовов.

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

Что ты думаешь?

1 Ответ

0 голосов
/ 30 октября 2018

Я бы сказал, что этот вопрос в основном основан на мнении. Однако я бы предпочел, чтобы не использовал три разных класса.

Мой основной аргумент в том, что вы можете использовать какой-то другой подкласс Exception или RuntimeException (который лучше соответствует причине, по которой генерируется исключение) и использовать параметр message, который используется конструктором класса. принимает (опционально).

С помощью этого параметра message вы можете точно указать, в какой модуль было сгенерировано исключение (при необходимости, поскольку трассировка стека уже сообщит вам, откуда оно было сгенерировано), а также любую другую полезную информацию о текущем состоянии программа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...