मेरे पास एक ऐसी स्थिति है जहां मैं एक वस्तु को पुनः प्राप्त करने की कोशिश कर रहा हूं। यदि लुकअप विफल रहता है तो मेरे पास कई कमियां हैं, जिनमें से प्रत्येक विफल हो सकती है। तो कोड जैसा दिखता है:
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);
}
}
}
यह भयानक बदसूरत लग रहा है। मुझे अशक्त लौटने में नफरत है, लेकिन क्या इस स्थिति में बेहतर है?
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;
क्या अन्य विकल्प हैं?
क्या नेस्टेड कोशिश-कैच ब्लॉक का उपयोग एक विरोधी पैटर्न है? संबंधित है, लेकिन इसके उत्तर "कभी-कभी, लेकिन यह आमतौर पर परिहार्य है" की तर्ज पर हैं, बिना यह कहे कि इसे कब या कैसे टालना है।
NotFoundException
कुछ ऐसा है जो वास्तव में असाधारण है?