ArrayDeque
имеет потенциальные проблемы с пропускной способностью, которые означают, что он может выбросить. Он удваивает емкость каждый раз, когда расширяется, поэтому в конечном итоге он больше не может удвоиться. Одна реализация кода делает следующее:
private void doubleCapacity() {
int n = elements.length;
int newCapacity = n << 1;
if (newCapacity < 0)
throw new IllegalStateException("Sorry, deque too big");
}
При определении addFirst
, как указано ниже, этот метод может выдавать как минимум два исключения, описанных в документации по интерфейсу.
public void addFirst(E e) {
if (e == null)
throw new NullPointerException();
elements[head = (head - 1) & (elements.length - 1)] = e;
if (head == tail)
doubleCapacity();
}
Как уже упоминалось, JavaDoc в интерфейсе просто дает возможные исключения. Ни один из типов, которые он выбрасывает, не является проверенным исключением, поэтому вы не обязаны их ловить.