Ответ
Runtime (unchecked) исключения в Java — это исключения, которые компилятор не проверяет. Они сигнализируют об ошибках программиста или внутренних сбоях, которые часто невозможно или нецелесообразно обрабатывать локально. Наследуются от RuntimeException.
Когда использовать:
- Ошибки программирования:
NullPointerException,ArrayIndexOutOfBoundsException,ClassCastException. - Нарушение контракта метода: Например, передача недопустимого аргумента (
IllegalArgumentException). - Ошибки, которые сложно или невозможно восстановить на текущем уровне абстракции.
Пример (валидация аргумента):
public void setDiscount(double discount) {
if (discount < 0 || discount > 1) {
// IllegalArgumentException — типичное unchecked исключение
throw new IllegalArgumentException("Скидка должна быть от 0 до 1");
}
this.discount = discount;
}
// Вызывающий код НЕ обязан обрабатывать это исключение в try-catch
Почему unchecked?
- Логические ошибки (обращение к
null) должны устраняться на этапе разработки, а не обработки. - Избегание загрязнения сигнатур методов: Не нужно добавлять
throwsдля множества потенциальных runtime-ошибок. - Best practice: В бизнес-логике приложений часто используют пользовательские unchecked исключения для ошибок валидации или нарушений бизнес-правил.