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