Ich habe eine Situation, in der ich versuche, ein Objekt abzurufen. Wenn die Suche fehlschlägt, sind mehrere Fallbacks vorhanden, von denen jedes fehlschlagen kann. Der Code sieht also so aus:
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);
}
}
}
Das sieht furchtbar hässlich aus. Ich hasse es, null zurückzugeben, aber ist das in dieser Situation besser?
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;
Gibt es noch andere Alternativen?
Ist die Verwendung verschachtelter Try-Catch-Blöcke ein Anti-Pattern? ist verwandt, aber die Antworten lauten "manchmal, aber normalerweise vermeidbar", ohne zu sagen, wann oder wie man es vermeidet.
NotFoundException
eigentlich etwas Außergewöhnliches?