IllegalStateException
Сообщает, что метод вызван в неподходящий момент — объект не в том состоянии.
Доступно с: Java 1.1
Синтаксис
public class IllegalStateException extends RuntimeExceptionПримеры
Нельзя отправить уже отправленный заказ:
class Order {
private boolean shipped;
void ship() {
if (shipped) throw new IllegalStateException("Order already shipped");
shipped = true;
IO.println("Shipped");
}
}
void main() {
var order = new Order();
order.ship();
try {
order.ship();
} catch (IllegalStateException e) {
IO.println(e.getMessage());
}
}Результат:
Shipped
Order already shippedПримечания
Разница с IllegalArgumentException: там виноват аргумент, здесь — текущее состояние объекта (поток уже закрыт, заказ уже оплачен). JDK бросает его, например, при повторном использовании Stream и при повторе ключа в Collectors.toMap().
См. также
- IllegalArgumentException — Сообщает, что метод получил недопустимый аргумент.
- UnsupportedOperationException — Возникает при вызове операции, которую объект не поддерживает, — например, изменение неизменяемой коллекции.
- RuntimeException — Базовый класс непроверяемых исключений — ошибок в логике программы.
В учебнике
- Свои исключения — Как создать собственный класс исключения в Java — наследование от Exception и RuntimeException, сообщение, причина и дополнительные поля.