So cosa è IllegalStateException , ma mi chiedo se in alcuni casi dovrei effettivamente usarlo o è solo questione di design.
Diciamo che ho una classe Tournament
che modella un torneo sportivo e un torneo ha un Schedule
, che deve essere calcolato. Quindi, a meno che tu non avvii effettivamente il processo di risoluzione che genera la pianificazione, non hai una pianificazione e cercare di ottenerla prima che questo sia effettivamente accaduto dovrebbe essere trattata in qualche modo. Ho pensato che questo sarebbe stato uno scenario appropriato in cui sarebbe stato lanciato un IllegalStateException
: se la pianificazione non è stata ancora calcolata, buttala. Vediamo:
public Tournament {
private Schedule schedule;
public boolean solve() {
boolean solved = solver.solve();
if (solved)
schedule = solver.getSolution();
return solved;
}
public Schedule getSchedule() {
if (schedule == null)
throw new IllegalStateException("Schedule has not been calculated yet");
return schedule;
}
// This udpates the current schedule with the "next" solution.
// Same logic regarding the ISE is applied
public boolean nextSchedule() {
if (schedule == null)
throw new IllegalStateException("Schedule has not been calculated yet");
boolean hasNextSolution = solver.update();
if (hasNextSolution)
schedule = solver.getSolution();
return hasNextSolution;
}
}
È ISE
usato in modo appropriato qui? Dovrebbero essere apportate modifiche nel design della classe?
Quali sono le migliori pratiche?