Как и где вы определяете собственную иерархию Exception в Java?
Мой главный вопрос касается расположения пакетов, где должны быть определены классы Exception.
Создаем ли мы специальный пакет ourexceptions и помещаем в него все классы?
Как и где вы определяете собственную иерархию Exception в Java?
Мой главный вопрос касается расположения пакетов, где должны быть определены классы Exception.
Создаем ли мы специальный пакет ourexceptions и помещаем в него все классы?
Я использую это как общее правило.
Я поместил все свои пользовательские исключения в пакет com.company.project.exception
. Я делаю это, а не помещаю их "близко" к местам, где они появляются.
Здесь мои рассуждения: если данное исключение только возникает в одном или двух классах сервисов где-то, это может быть не достаточно общее исключение, чтобы заслужить его собственный класс. Только если я увижу, что общая тема появляется в нескольких местах, я пойду на проблему создания настраиваемого класса исключений. И если он появляется в нескольких местах, тогда нет никакого логического пакета для "прикрепления" его, поэтому пакет, зависящий от исключения, кажется правильным путем.
Вы можете создавать классы Exception везде, где хотите.
Важно расширить существующий класс Exception (фактически java.lang.Throwable
). Например java.lang.Exception
или java.lang.RuntimeException
. Первое - это проверенное исключение, а расширение RuntimeException приведет к неконтролируемому исключению; различия между ними подробно описаны здесь.
Язык не указывает каких-либо требований к тем, для каких пакетов должны быть помещены пользовательские классы Exception
. Пока класс расширяет java.lang.Throwable
, он может быть сброшен.