Я положил все свои пользовательские исключения в пакет com.company.project.exception
. Я делаю это, а не помещаю их «близко» к местам, где они возникают.
Вот мое рассуждение: если данное исключение возникает только в одном или двух классах обслуживания где-то, это может быть недостаточно общим исключением, чтобы заслужить свой собственный класс. Только если я увижу общую тему, появляющуюся в нескольких местах, я начну создавать собственный класс исключений. И если он появляется в нескольких местах, то нет логического пакета, к которому его можно «прикрепить», поэтому пакет для конкретного исключения кажется правильным решением.