Ho una situazione in cui sto provando a recuperare un oggetto. Se la ricerca non riesce, sono presenti diversi fallback, ciascuno dei quali potrebbe non riuscire. Quindi il codice è simile al seguente:
try {
return repository.getElement(x);
} catch (NotFoundException e) {
try {
return repository.getSimilarElement(x);
} catch (NotFoundException e1) {
try {
return repository.getParentElement(x);
} catch (NotFoundException e2) {
//can't recover
throw new IllegalArgumentException(e);
}
}
}
Sembra terribilmente brutto. Odio restituire null, ma è meglio in questa situazione?
Element e = return repository.getElement(x);
if (e == null) {
e = repository.getSimilarElement(x);
}
if (e == null) {
e = repository.getParentElement(x);
}
if (e == null) {
throw new IllegalArgumentException();
}
return e;
Ci sono altre alternative?
L'utilizzo di blocchi nidificati try-catch è un anti-pattern? è correlato, ma le risposte ci sono sulla falsariga di "a volte, ma di solito è evitabile", senza dire quando o come evitarlo.
NotFoundException
davvero eccezionale?