Вопрос проверяет понимание иерархии исключений и умение проектировать собственные ошибки в Java.
Да, в Java можно создать собственное исключение. Тип исключения определяется тем, от какого класса оно наследуется. Если наследоваться от Exception, исключение будет checked. Если от RuntimeException — unchecked.
Создание собственных исключений используется для более точного и понятного описания ошибок в приложении.
Пользовательское исключение — это обычный класс, унаследованный от одного из классов иерархии Throwable.
Если исключение должно обрабатываться явно, оно наследуется от Exception.
public class ValidationException extends Exception {
public ValidationException(String message) {
super(message);
}
}
Особенности:
Компилятор требует try-catch или throws
Подходит для ожидаемых ошибок
Часто используется для ошибок внешних систем
Если исключение отражает ошибку логики, оно наследуется от RuntimeException.
public class BusinessException extends RuntimeException {
public BusinessException(String message) {
super(message);
}
}
Особенности:
Не требует обязательной обработки
Проявляется во время выполнения
Часто используется в бизнес-логике
Выбор зависит от характера ошибки:
Ошибка ожидаемая и восстанавливаемая → checked
Ошибка логики или некорректного состояния → unchecked
Тип пользовательского исключения выбирается осознанно: checked — для контролируемых ситуаций, unchecked — для сигнализации о дефектах логики.