Я понимаю, что это необходимо ... конечно, для написания правильного кода, но есть ли шаблон проектирования, который поможет избежать повторения блоков try ... catch повторно в классе ? Например, я написал конкретный класс, который выдает 5 разных исключений.
public void iterateComparatorResults(ArrayList<ComparatorValue> results) throws IOException, IllegalArgumentException, IntrospectionException, IllegalAccessException, InvocationTargetException {
Iterator<ComparatorValue> iterator = results.iterator();
for(int i=0; i<results.size(); i++) {
//Set data variables.
setBeans(results.get(i).getClientBean(), results.get(i).getServerBean());
setValues(results.get(i).getClientValue(), results.get(i).getServerValue());
if(results.get(i).isMatch()) {
//Data matches.
runIteratorTrueAction();
} else if(results.get(i).getInnerBeans() != null){
//Value is a nested bean. Iterate again.
ArrayList<ArrayList<ComparatorValue>> innerResults = results.get(i).getInnerBeans();
for(int r=0; r<innerResults.size(); r++) {
iterateComparatorResults(innerResults.get(r));
}
} else {
//Data does not match.
runIteratorFalseAction();
}
}
}
Каждый раз, когда я ссылаюсь на этот конкретный метод из любого другого класса, я должен использовать блок try catch, который выглядит следующим образом.
try {
beanComparator.setIteratorFalseAction(falseAction);
beanComparator.iterateComparatorResults(beanComparator.compareBeans(contact, compareContact));
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (IntrospectionException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
Я надеюсь, что есть какой-то шаблон проектирования, который я могу реализовать, чтобы я мог создать отдельный класс или что-то в этом роде и спрятать все блоки try в одном месте, затем ссылаться на этот класс и использовать блоки try без необходимости их записи. Подобно тому, как это делают другие фреймворки, такие как Spring? Мне просто нужно небольшое руководство о том, как это сделать, поскольку я даже не знаю, с чего начать.