NOTA: questa domanda riguarda la ricerca di un nome appropriato per un'eccezione in cui la condizione per generare l'eccezione non è effettivamente avvenuta (ad esempio impedire un StackOverflow lanciando un StackOverflowException
prima di un overflow verificare)
Ho una classe FooList
che ha limiti sul numero di elementi che può contenere. Il costruttore prende un elenco iniziale di elementi e altri elementi possono essere aggiunti, fino al limite.
La domanda che ho è questa. Avere un FooList
completo non è eccezionale. Ho deciso che sarebbe probabilmente meglio se avessi fornito al client un modo per verificare se c'era spazio nella FooList
prima di provare ad aggiungervi qualcosa ( hasRoom
). Tuttavia, questo non impedisce loro di chiamare add
senza prima verificare.
Ho deciso che in questo caso potrebbe essere opportuno lanciare un'eccezione. Tuttavia, non sono esattamente sicuro di come chiamarlo. Come ho affermato, avere un FooList
completo non è particolarmente eccezionale ed è in effetti uno stato perfettamente valido. Quindi, lanciare un FooListFullException
non sembra giusto. Tuttavia, anche il lancio di un UnableToAddFooToListBecauseFooListIsFullException
non sembra corretto.
public class FooList {
FooList(List<Foo> foos) {
Objects.requireNonNull(foos);
if (foos.size() > 6) {
throw new IllegalArgumentException("foos must not contain more than 6 Foos");
}
if (foos.size() < 1) {
throw new IllegalArgumentException("foos must contain at least 1 Foo");
}
this.foos = foos;
}
void add(Foo foo) {
Objects.requireNonNull(foo);
if (!hasRoom()) {
throw new XException("no more room in list");
}
}
boolean hasRoom() {
return getNextEmptyIndex() != -1;
}
private List<Foo> foos;
}
In che modo posso denominare l'eccezione per indicare che un'operazione add
non è in grado di completare, O, c'è un modo migliore per farlo attraverso l'utente / client?