Одно общее пользовательское исключение или несколько в Service Layer (Spring)

Я создаю свой самый первый проект Spring (плюс Hibernate). Пока что я создал только две сущности: пользователя и группу. Для этих организаций существуют их DAO. И теперь я нахожусь в слое Service.

Определяя интерфейс UserService, я начал задумываться о том, что лучше: 1. Создать универсальное настраиваемое исключение с кодом ошибки (например, веб-коды ошибок: 404, 500...) или, 2. Создать множество особых настраиваемых исключений, таких как: UserNotExistException, GroupNotExist, UserNotActive, GroupNotActive...

2 ответа

Решение

Я думаю, что лучше иметь одно исключение для каждого значения исключения, а не для объекта: NotExistsException, NotActive,... где вы можете передавать определенные сообщения (или даже объекты), чтобы показать больше информации об объекте, вызвавшем исключение. Зачем? Потому что, если приложение начнет расти:

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

  • Если значение самого исключения не меняется из-за объекта (например, в NotExistsException), вы дублируете код.

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

Хорошо использовать универсальное пользовательское исключение с другим кодом ошибки вместе с трассировкой ошибок.

Другие вопросы по тегам