Какой тип checked exception указывать в интерфейсе?

В книге Clean Code (Чистый Код) в главе 17 описан smell (запашок) G6: Code at Wrong Level of Abstraction.

public interface Stack {
    Object pop() throws EmptyException;
    void push(Object o) throws FullException;
    double percentFull();
    class EmptyException extends Exception {}
    class FullException extends Exception {}
}

В этом интерфейсе метод percentFull явно лишний, т. к. класс стека, реализующий его, может не иметь заданной ёмкости. С этим всё понятно, удаляём метод из интерфейса.

Однако, метод push может бросать исключение FullException, которое, аналогично, не имеет смысла, если реализация стека boundless (безразмерная).

Собственно, вопрос: что делать с этим исключением в Java? В книге ничего по этому поводу не сказано. Я не нашёл обсуждений этого вопроса. Следует ли в интерфейсе заменить исключение на более общее Exception и, соответственно, полностью убрать FullException?

В языках, где не нужно указывать выбрасываемые исключения, такого вопроса не возникает.


Ответы (0 шт):